如何编译所有模块但 install/deploy 只编译选定的模块?
How to compile all modules but install/deploy only selected modules?
我有一个典型的多模块 maven 项目。
- 有一个 Jenkins 作业可以构建所有快照并将其部署到内部存储库。
- 还有另一个 Jenkins 构建,它检查代码、更新所有 pom 版本以及构建和部署版本化工件。
我想通过仅部署所需的工件来优化后者:即 2 或 3 100+ 个模块。
构建应该仍然编译和测试所有模块,但 install/deploy 只选择模块工件到内部 repo。
问题:有办法吗?
在这种情况下,您可以在 aggregator/parent 项目(主构建应从该项目开始)中定义通过 属性 跳过安装和部署执行,以便通过所有默认情况下的模块。然后,在仍应执行此操作的几个模块中,您可以覆盖特定的 属性 以再次启用它们。
由于整个操作都是针对 CI 工作,我还建议将此行为包装在 maven profile 中,如下所示:
在您的 aggregator/parent 项目中,您可以定义:
<profiles>
<profile>
<id>ci-job</id>
<properties>
<disable.install.deploy>true</disable.install.deploy>
<maven.install.skip>${disable.install.deploy}</maven.install.skip>
<maven.deploy.skip>${disable.install.deploy}</maven.deploy.skip>
</properties>
</profile>
</profiles>
上面的代码片段在 ci-job
配置文件中定义了一个新的 属性、disable.install.deploy
,默认设置为 true
。然后将其值传递给 maven-install-plugin
:
的 maven.install.skip
属性
Set this to true to bypass artifact installation. Use this for artifacts that does not need to be installed in the local repository.
和 maven.deploy.skip
属性 的 maven-deploy-plugin
:
Set this to 'true' to bypass artifact deploy
因此,运行 如下:
mvn clean install -Pci-job
将有效地跳过跨构建(跨所有模块)的安装和部署目标执行。
然而,这只是工作的一半。在您仍然需要此操作的几个模块中,您可以定义以下内容:
<profiles>
<profile>
<id>ci-job</id>
<properties>
<disable.install.deploy>false</disable.install.deploy>
</properties>
</profile>
</profiles>
也就是。保持相同的配置文件名称,它也将通过相同的全局构建调用激活,但是将键 属性 设置为 false
,因此再次启用安装和部署将添加此配置文件的模块。
我有一个典型的多模块 maven 项目。
- 有一个 Jenkins 作业可以构建所有快照并将其部署到内部存储库。
- 还有另一个 Jenkins 构建,它检查代码、更新所有 pom 版本以及构建和部署版本化工件。
我想通过仅部署所需的工件来优化后者:即 2 或 3 100+ 个模块。
构建应该仍然编译和测试所有模块,但 install/deploy 只选择模块工件到内部 repo。
问题:有办法吗?
在这种情况下,您可以在 aggregator/parent 项目(主构建应从该项目开始)中定义通过 属性 跳过安装和部署执行,以便通过所有默认情况下的模块。然后,在仍应执行此操作的几个模块中,您可以覆盖特定的 属性 以再次启用它们。
由于整个操作都是针对 CI 工作,我还建议将此行为包装在 maven profile 中,如下所示:
在您的 aggregator/parent 项目中,您可以定义:
<profiles>
<profile>
<id>ci-job</id>
<properties>
<disable.install.deploy>true</disable.install.deploy>
<maven.install.skip>${disable.install.deploy}</maven.install.skip>
<maven.deploy.skip>${disable.install.deploy}</maven.deploy.skip>
</properties>
</profile>
</profiles>
上面的代码片段在 ci-job
配置文件中定义了一个新的 属性、disable.install.deploy
,默认设置为 true
。然后将其值传递给 maven-install-plugin
:
maven.install.skip
属性
Set this to true to bypass artifact installation. Use this for artifacts that does not need to be installed in the local repository.
和 maven.deploy.skip
属性 的 maven-deploy-plugin
:
Set this to 'true' to bypass artifact deploy
因此,运行 如下:
mvn clean install -Pci-job
将有效地跳过跨构建(跨所有模块)的安装和部署目标执行。
然而,这只是工作的一半。在您仍然需要此操作的几个模块中,您可以定义以下内容:
<profiles>
<profile>
<id>ci-job</id>
<properties>
<disable.install.deploy>false</disable.install.deploy>
</properties>
</profile>
</profiles>
也就是。保持相同的配置文件名称,它也将通过相同的全局构建调用激活,但是将键 属性 设置为 false
,因此再次启用安装和部署将添加此配置文件的模块。