SpringBoot項目打包時提示“程序包xxx不存在,找不到符號”解決辦法(已解決)
項目結構:
xxx-parent:頂級父工程
xxx-a:子項目1
xxx-b:子項目2
xxx-c:子項目3
如圖:
問題場景:
在運行引導類的時候,一直提示“程序包xxx不存在,找不到符號”
原因分析:
原來是springboot自身的編譯插件spring-boot-maven-plugin導致的。
1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.springframework.boot</groupId> 5 <artifactId>spring-boot-maven-plugin</artifactId> 6 </plugin> 7 </plugins> 8 </build>
如上,就是springboot的maven插件,用這個插件打包的Jar包可以直接運行,但是不可依賴!
解決方案(三選一):
1、(推薦) 不要將此插件放到頂級父工程中,在需要打成可執行jar的地方添加就好了,如果是需要被依賴的,就不要添加此插件(如上述案例中,就是xxx-a、xxx-b不加,xxx-c需要加);
SpringBoot項目運行引導類時候出現此類問題一般刪除此依賴,在maven中clear一下項目再install一下就能解決
2、 在需要對外提供依賴的項目的pom里設置(如本項目的xxx-a、xxx-b),這樣設置會讓項目生成兩個jar:一個可執行jar,一個可依賴的jar;
1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.springframework.boot</groupId> 5 <artifactId>spring-boot-maven-plugin</artifactId> 6 <configuration> 7 <!-- 生成可執行的jar的名字:xxx-exec.jar --> 8 <!-- 不固定,寫成abcd都可以 --> 9 <classifier>exec</classifier> 10 </configuration> 11 </plugin> 12 </plugins> 13 </build>
3、在configuration中加入skip標簽,取消生成可執行jar;
1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.springframework.boot</groupId> 5 <artifactId>spring-boot-maven-plugin</artifactId> 6 <configuration> 7 <skip>true</skip> 8 </configuration> 9 </plugin> 10 </plugins> 11 </build>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>