出现多模块打包找不到类和符号的问题?
maven-compiler-plugin和spring-boot-maven-plugin 这俩个插件是我们微服务打包常用到的
1,每个模块配置了spring-boot-maven-plugin 打出来的包都是独立的,即使你clean install 都一样。
2,idea工具有时候打包会出问题,最好的解决办法是通过命令去编译项目打包。
3,启动的项目配置打包。比如我们有三个maven模块:parent,service,server。其中server是一个可以启动的springboot项目,其他模块都是作为jar包引入到server模块中使用的,这时候,我们只能在server模块中引入spring-boot-maven-plugin插件,将api项目打成可执行jar。其余项目都只使用maven-compiler-plugin。这样找不到类的问题就解决了。
server 的pom.xm
<!--构建-->
<profiles>
<profile>
<id>local</id>
<properties>
<profiles.active>local</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<profile>
<id>uat</id>
<properties>
<profiles.active>uat</profiles.active>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.tld</include>
<include>**/*.html</include>
<include>**/*.yml</include>
<include>**/*.xlsx</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>config/*.properties</include>
<include>config/*.yml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
<include>**/*.xlsx</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
<finalName>${project.artifactId}</finalName>
</configuration>
</plugin>
</plugins>
</build>
父依赖:
4,最好使用mvn 命令打包编译。以下是问题汇总。
## 编译项目
mvn -X -DskipTests=true compile
## 编译项目并且打包 切入到项目最外面
mvn clean install package -Dmaven.test.skip=true
java -jar启动nacos 报
nacos报错: java.nio.charset.MalformedInputException: Input length = 1
原因是nacos的yml编码和项目不一致,导致其他问题。
解决办法:
java -jar -Dfile.encoding=utf-8 xxx.jar