一,首先,明確一個問題,能用命令就用命令, idea 右側快捷不好用。
mvn clean package:完成編譯,測試,打包,但是沒有把打好的可執行包放到本地遠程倉庫。
mvn clean install:完成編譯,測試,打包,並且放到本地倉庫。
mvn clean depoly:完成編譯,測試,打包,並且放到本地以及遠程倉庫。
PS:clean 操作,能夠解決項目引導類打包 出現的莫名其妙的問題,最好加上。
二, SpringBoot 關於編譯的插件,自帶的打包需要 main 方法!並且不可被依賴!
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
坑:如果父工程,pom 中加了這個,那麼各個模塊打包,都會檢測 main 方法,並且打包不能用於依賴。
解決辦法:
1,把 父類 pom 下,打包 插件改爲:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
此時,可以去把 common,model,api,utils 等公共模塊進行 mvn clean install 打包(此時公共包就可以被依賴了),看看本地倉庫好有了沒。
2, 最好,spring-boot-maven-plugin,不在父級下加,而是那個包需要 可執行,哪個就加。
3,可以繼續 調整 plugin 配置:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--這樣會生成兩個 jar,一個可依賴,一個可執行並且後綴爲 -execute -->
<configuration>
<classifier>execute</classifier>
</configuration>
</plugin>
如果不想要可執行 jar,那麼
<classifier>execute</classifier> 改成 <skip>true</skip>