Maven 如何编译所有模块,但仅安装/部署选定模块?

Maven 如何编译所有模块,但仅安装/部署选定模块?,maven,jenkins,maven-3,pom.xml,maven-deploy-plugin,Maven,Jenkins,Maven 3,Pom.xml,Maven Deploy Plugin,我有一个典型的多模块maven项目 Jenkins的工作是构建所有快照并将其部署到内部存储库 还有另一个Jenkins构建,它检查代码,更新所有pom版本,并构建和部署版本化工件 我想通过只部署所需的工件来优化后者:即100+模块中的2或3 构建仍应编译和测试所有模块,但仅将选定的模块构件安装/部署到内部repo 问题:有没有办法做到这一点 在这种情况下,您可以在聚合器/父项目(主生成应从该项目开始)中定义通过属性跳过安装和部署执行,以便在默认情况下通过所有模块禁用它们。然后,在仍应执行此操

我有一个典型的多模块maven项目

  • Jenkins的工作是构建所有快照并将其部署到内部存储库
  • 还有另一个Jenkins构建,它检查代码,更新所有pom版本,并构建和部署版本化工件
我想通过只部署所需的工件来优化后者:即100+模块中的23

构建仍应编译和测试所有模块,但仅将选定的模块构件安装/部署到内部repo


问题:有没有办法做到这一点

在这种情况下,您可以在聚合器/父项目(主生成应从该项目开始)中定义通过属性跳过安装和部署执行,以便在默认情况下通过所有模块禁用它们。然后,在仍应执行此操作的少数模块中,可以重写特定属性以再次启用它们

由于整个操作都是针对CI作业的,因此我还建议将此行为包装为如下内容:

<profiles>
    <profile>
        <id>ci-job</id>
        <properties>
            <disable.install.deploy>false</disable.install.deploy>
        </properties>
    </profile>
</profiles>
在聚合器/父项目中,您可以定义:

<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>

就是。保持相同的配置文件名称,它也将通过相同的全局生成调用被激活,但是将key属性设置为
false
,从而为要添加此配置文件的模块再次启用安装和部署。

感谢您编辑问题@A.Di Matteo。现在更清楚了。太好了,你认为
禁用.install.deploy
可能是顶级配置吗?在这种情况下,我只需要重新定义属性,而不是整个配置文件。无论如何,我会自己尝试,只是想问一下。@phani您可以将它们定义为顶级,但这实际上取决于您是想将此配置保留为默认行为还是仅保留为CI行为,这就是为什么我建议在配置文件中包装(并隔离)该行为。很显然,如何应用于您的特定需求取决于您。希望如此helped@phani你最终解决了这个问题吗?你没有接受答案,也没有分享额外的反馈。只是检查一下:)对不起,我对它进行了某种程度的测试,结果它被搁置一旁了。我们将很快分享细节。谢谢