虽然一直在使用maven,但是对于maven的配置还没有深入的了解过。本文以build节点为切入点,主要解释相关maven打包使用到的一些基础配置。
文章目录
- build节点
- 常用插件
- spring-boot-maven-plugin
- maven-jar-plugin
- maven-dependency-plugin
- 注意事项
build节点
一般包含以下几块内容:
- xxxApplication
- ,该节点比较重要,支持自定义打包步骤
常用插件
分为两种情况,如果我们的使用了SpringBoot的spring-boot-starter-parent,则可以用以下插件:
spring-boot-maven-plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
由于使用了spring-boot的插件,天然就支持独立jar包启动,最终打包结果输出一个jar包。
maven-jar-plugin
否则就应该使用maven的默认自带插件进行自定义设置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
使用该插件则需要配置使得支持独立应用启动,完整的配置文件可以参考以下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!--MANIFEST.MF 中 Class-Path 加入前缀-->
<classpathPrefix>lib/</classpathPrefix>
<!--jar包不包含唯一版本标识-->
<useUniqueVersions>false</useUniqueVersions>
<!--指定入口类-->
<mainClass>com.xxx.XxxApplication</mainClass>
</manifest>
<manifestEntries>
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录-->
<Class-Path>./config/</Class-Path>
</manifestEntries>
</archive>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</plugin>
maven-dependency-plugin
处理与依赖相关的插件,将打包结果所依赖的文件均进行统一管理。一般与maven-jar-plugin插件搭配使用,使用示例如下:
<!--拷贝依赖 copy-dependencies-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib/
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
注意事项
-
如果我们的项目是一个聚合工程包含了多个模块,那么需要注意父pom不需要节点
-
需要区分项目的插件使用,例如我们使用了spring-boot-maven-plugin就必须要保证项目的父依赖使用了spring-boot-starter-parent,否则将会导致打包失败
-
在SpringCloud项目中,如果使用了properties指定了springboot.version,则parent中的spring-boot-starter-parent也要保持一致的版本号
-
在聚合工程中,只有在需要独立运行的模块中才需要加上节点,如果只是被依赖方则不需要加上节点
参考资料:
- Maven之POM文件build标签详解
- Maven命令打包springboot项目运行提示jar中没有主清单属性
- spring-boot-maven-plugin多模块install问题
- classNotFoundException:org.springframework.core.metrics.ApplicationStartup