Spring Boot踩坑交流
问题:运行Spring Boot+Maven项目时clean失败
父pom文件引用的maven插件资源版本
- 浅谈Maven 生命周期
- 上述问题的解决方案
对Maven生命周期的理解
Maven的生命周期是对所有的构建过程进行抽象和统一,它的生命周期是抽象的,也就意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。而在执行这些阶段时,实际的工作还是由插件来完成的。
主要有三个内置的生成生命周期:
默认(default)—default生命周期处理项目部署
清空(clean)—clean生命周期处理项目清空
站点(site)—site生命周期处理项目站点文档的创建
生命周期的主要阶段有:
1.install-----在本地Maven Repository中安装jar,本地项目可以依赖,但是别人无法依赖;install时把target下的jar安装到本地仓库,供其他项目使用;在install之前务必要选择合适的setting配置好本地的Maven仓库,当出现install不到相关的jar包的时候,可选择更换setting文件,从不同的私服下载jar包;下载的依赖版本出现问题的时候,需要在(http://mvnrepository.com/)中查询版本号是否存在,选择合适的依赖。
2.clean-----清除项目下的target文件,执行clean 命令后的项目结构,没有target文件,target为输出目录,所有的输出都放在这个目录下,一般在提交项目至SVN时候切记不要提交,打包项目之前,务必要先clean一下项目,清除target目录下的文件
3.compile-----编译项目的源代码,执行该命令后,target目录下生成classes文件夹,里面存放编译后的class文件
4.package-----将项目中的各种文件,如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,常见的就是JAR包和WAR包可用于发布。区别:package是把jar打到本项目的target下,而install时把target下的jar安装到本地仓库,供其他项目使用
上述问题的解决方案:
在pom文件中添加下面的代码:分别执行clean,compile,install命令,执行成功
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
对此段代码的理解:
pluginManagement 表示插件声明,在它下面声明的插件,maven是不会加载的,一般定义在父pom文件中,提供给子POM使用,当然了,子POM也可以覆盖这个定义;而且在父POM中定义了版本之后,子模块中直接应用groupId和artifactId,而不用指定版本,同时也方便统一管理;此外,父POM中的pluginManagement并不会介入到Maven的生命周期。
目的:主要是为了统一管理插件,确保所有子POM使用的插件版本保持一致
plugins的作用:给出构建过程中用到的插件,把写好的程序和程序本身所依赖的jar包一起build到一个包里,这是maven中针对打包任务而提供的标准插件。
如果是继承了父POM则不用显示指定插件的内容
参考链接
- [1]maven声明周期1
- [2]maven生命周期详解2
- [3]maven生命周期与插件