目录
一、maven项目构建过程
二、pom常用构建配置
三、pom默认构建配置
四、开发自定义构建插件
一、maven项目构建过程
生命周期 | 阶段 | 插件目标 | 执行的任务 |
clean | pre-clean | 清理前的准备工作 | |
clean | maven-clean-plugin:clean | 清空target目录 | |
post-clean | 清理结束后需要完成的工作 | ||
default | validate | 验证项目是否正确以及所有必要信息是否可用 | |
initialize | 初始化构建状态 | ||
generate-sources | 生成编译阶段需要的所有源码文件 | ||
process-sources | maven-resources-plugin:resources | 资源文件复制到target目录 | |
generate-resources | 生成项目打包阶段需要的资源文件 | ||
process-resources | 处理资源文件,并复制到输出目录,为打包阶段做准备 | ||
compile | maven-compiler-plugin:compile | 编译生成.class文件并移动到target目录 | |
process-classes | 处理编译生成的字节码文件 | ||
generate-test-sources | 生成编译阶段需要的测试源代码 | ||
process-test-sources | maven-resources-plugin:testResources | 测试资源复制到target目录 | |
test-compile | maven-compiler-plugin:testCompile | 编译测试源代码并移动到测试输出目录中 | |
test | maven-surefire-plugin:test | 使用适当的单元测试框架(例如JUnit)运行测试 | |
prepare-package | 在真正打包之前,执行—些必要的操作 | ||
package | maven-jar-plugin:jar | 打JAR包 | |
maven-jar-plugin:war | 打WAR包 | ||
spring-boot-maven-plugin:repackage | jar打包完成后重新打包,生成可执行jar,包含所有依赖的jar包 | ||
maven-assembly-plugin:assembly | 打zip包 | ||
pre-integration-test | 在集成测试执行之前,执行所需的操作,例如设置环境变量 | ||
integration-test | 处理和部署所需的包到集成测试能够运行的环境中 | ||
post-integration-test | 在集成测试被执行后执行必要的操作,例如清理环境 | ||
verify | 对集成测试的结果进行检查,以保证质量达标 | ||
install | maven-install-plugin:install | jar/war包安装到本地仓库 | |
deploy | maven-deploy-plugin:deploy | jar/war包安装到远程仓库 | |
site | pre-site | 准备阶段在生成站点前所需要做的工作 | |
site | maven-site-plugin:site | 生成站点阶段 | |
post-site | 结束阶段生成站点结束后所需要做的工作 | ||
site-deploy | maven-site-plugin:deploy | 站点发布到服务器中 |
二、pom常用构建配置
<build>
<!--指定最终build生成的jar/zip名称-->
<finalName>${project.parent.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<!--打可执行jar包,并把所有依赖的jar包及资源都打进去-->
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<!--构建时打印日志包含id-->
<id>make-repackage</id>
<!--指定绑定阶段,不指定默认package阶段,
多个插件绑定到package阶段按xml中顺序执行,
<packaging>jar</packaging>项目最先执行默认插件目标maven-jar-plugin:jar
<packaging>pom</packaging>项目(即父项目)不执行默认插件目标-->
<phase>package</phase>
<goals>
<!--指定执行目标(函数),将原jar包更名为.original,再重新打jar包-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<exclude>
<!-- 排除依赖-->
</exclude>
</excludes>
<mainClass>com.gk.App</mainClass><!--指定主类,不指定会默认找main函数-->
</configuration>
<version>2.2.4.RELEASE</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<!--打zip包-->
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<!--打zip包的方式配置文件,文件在项目根目录-->
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!--指定绑定阶段,不指定默认package阶段,
多个插件绑定到package阶段按xml中顺序执行,
<packaging>jar</packaging>项目最先执行默认插件目标maven-jar-plugin:jar
<packaging>pom</packaging>项目(即父项目)不执行默认插件目标-->
<phase>package</phase>
<goals>
<!--指定执行目标(函数),打zip包-->
<goal>assembly</goal>
</goals>
<configuration>
<!-- zip文件输出目录,当前目录为项目根目录(即pom目录),不指定默认./target目录-->
<outputDirectory>../</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>initialize-clean</id>
<!-- 项目构建前先clean项目 -->
<phase>initialize</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
三、pom默认构建配置
<build>
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</build>