您的位置:首页 > 健康 > 养生 > 软件开发者简称_张雷明任河南省委常委_免费推广网站推荐_天津百度推广排名优化

软件开发者简称_张雷明任河南省委常委_免费推广网站推荐_天津百度推广排名优化

2024/12/27 15:06:26 来源:https://blog.csdn.net/pumpkin84514/article/details/142314117  浏览:    关键词:软件开发者简称_张雷明任河南省委常委_免费推广网站推荐_天津百度推广排名优化
软件开发者简称_张雷明任河南省委常委_免费推广网站推荐_天津百度推广排名优化

Maven 生命周期与阶段总结

Maven 共有三个主要生命周期,每个生命周期由多个阶段组成。以下是每个生命周期和其阶段的详细描述。

生命周期阶段描述
默认生命周期validate验证项目是否正确且所有必要信息是否可用。
initialize初始化构建状态,设置一些属性。
generate-sources生成项目需要的源码(如果有相应插件)。
process-sources处理项目主源码。
generate-resources生成项目所需的资源文件。
process-resources复制和处理资源文件至目标目录。
compile编译主源码。
process-classes处理编译后的类文件(如字节码增强)。
generate-test-sources生成测试源码。
process-test-sources处理测试源码。
generate-test-resources生成测试资源文件。
process-test-resources复制和处理测试资源文件至目标目录。
test-compile编译测试代码。
test运行测试代码。
prepare-package执行打包前的准备工作。
package将编译后的代码打包为可分发格式(如 JAR、WAR 文件)。
pre-integration-test集成测试前执行的准备工作。
integration-test处理并执行集成测试。
post-integration-test集成测试完成后执行的操作。
verify运行所有检查,确保项目符合质量标准。
install将打包的工件安装到本地仓库中。
deploy将项目部署到远程仓库中。
清理生命周期pre-clean清理前的准备工作。
clean删除之前生成的构建文件(如目标目录中的文件)。
post-clean清理完成后的操作。
站点生命周期pre-site站点生成前的准备工作。
site生成项目的站点文档。
post-site站点生成后的操作。
site-deploy将生成的站点发布到服务器。

Maven 生命周期与父子模块插件执行控制

Maven 依赖于生命周期来执行构建任务,父模块和子模块会共享相同的生命周期,但通过适当的配置,可以避免子模块执行父模块的插件操作。

解决方案:通过插件的 skip 参数控制子模块跳过执行

使用插件的 skip 参数,可以让子模块不执行特定插件。例如,对于 maven-antrun-pluginmaven-resources-plugin,你可以在子模块的 pom.xml 中显式设置 skiptrue

通过插件 skip 参数避免子模块执行

以下是一个完整的配置示例:

父模块 pom.xml
<project><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>parent-module</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>child-module1</module><module>child-module2</module></modules><build><plugins><!-- 父模块执行的插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><executions><execution><id>copy-resources</id><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><resources><resource><directory>src/main/resources</directory></resource></resources><outputDirectory>${project.build.directory}/resources</outputDirectory></configuration></execution></executions></plugin></plugins></build>
</project>
子模块 pom.xml

在子模块中,明确配置需要跳过的插件并设置 skiptrue

<project><modelVersion>4.0.0</modelVersion><parent><groupId>com.example</groupId><artifactId>parent-module</artifactId><version>1.0-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent><groupId>com.example</groupId><artifactId>child-module1</artifactId><version>1.0-SNAPSHOT</version><build><plugins><!-- 配置要跳过执行的插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><configuration><skip>true</skip></configuration></plugin></plugins></build>
</project>

避免子模块执行父模块插件的总结

  1. 通过 skip 控制插件跳过:在子模块中,可以配置插件的 <skip> 参数为 true,从而避免子模块执行父模块的插件操作。
  2. 父模块插件配置的继承:父模块的插件配置在默认情况下会继承给子模块,除非你在子模块中配置插件并显式使用 skip 参数。
  3. 阶段与生命周期的控制:可以通过将插件的执行绑定到特定生命周期的阶段,来控制插件在父模块中的执行时机。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com