一,首先,明确一个问题,能用命令就用命令, 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>