我想部署两个具有不同分类器的jar工件,但目前失败是因为它们都提供了自己的pom.xml
版本。我该如何解决这个问题,以便pom.xml
可以与他们的工件一起上传?
示例 - 我有com.test.company.somelib-1.0.0-cmp1.jar
和com.test.company.somelib-1.0.0-cmp2.jar
,其中cmpX
是分类器。两个包都包含(逻辑上)相同的代码和类(相同版本),它们在预处理方式上略有不同。由于我们需要维护的向后兼容性,分类器注释是存在的。
长话短说,第一个工件上传很好,第二个工件用Forbidden
失败,因为我们的存储库不允许覆盖工件(我想保持这种方式)。
有一个稍微不同的管道可以创建两个包,因此更容易将它们的构建分开。我只想将它们部署为两个具有相同名称和不同分类器的包。
感谢您的帮助
编辑:建议使用Maven个人资料。我可以看出它们会起作用,但它们并不理想。
考虑我在下图中描述的设置 - 有一个CI服务器(TeamCity)。
classifier
和其他信息),然后构建并将其工件部署到我们的Artifactory。如果我决定添加另一个 processing-build ,我想要实现的设置,我需要做的就是添加另一个"分支"。如果我使用的是配置文件,我还需要在pom.xml文件中添加一个新的配置文件。
如果我错了,请纠正我。配置文件似乎能够实现目标,但不是理想情况下,至少在我的情况下。
答案 0 :(得分:1)
我强烈反对使用相同GAV的2个(或更多)不同的pom文件。
但我理解你的需要是由遗留原因引起的。 我自己没试过,但它可能有效: 保留一个构建(= maven项目),就像现在一样。在另一个构建中跳过正常部署并手动调用部署插件的部署文件目标,如下所示:
<build>
<plugins>
<!-- skip normal execution of deploy plugin -->
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<executions>
<execution>
<id>default-deploy</id>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
<!-- invoke with goal: deploy-file -->
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<executions>
<execution>
<id>someId</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<inherited>false</inherited>
<configuration>
<file>path-to-your-artifact-jar</file>
<generatePom>false</generatePom>
<artifactId>xxx</artifactId>
<groupId>xxx</groupId>
<version>xxx</version>
<classifier>xxx</classifier>
<packaging>xxx</packaging>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>