繁体   English   中英

Maven从两个独立的pom.xml部署两个具有不同分类器的jar

[英]Maven deploy two jars with different classifiers from two separate pom.xml

我想部署两个具有不同分类器的jar工件,但目前失败是因为它们都提供了自己的pom.xml版本。 我该如何解决这个问题,以便可以将pom.xml与其工件一起上传?

示例 - 我有com.test.company.somelib-1.0.0-cmp1.jarcom.test.company.somelib-1.0.0-cmp2.jar ,其中cmpX是一个分类器。 两个包都包含(逻辑上)相同的代码和类(相同版本),它们在预处理方式上略有不同。 由于我们需要维护的向后兼容性,分类器注释是存在的。

长话短说,第一个工件上传很好,第二个工件因Forbidden而失败,因为我们的存储库不允许覆盖工件(我希望保持这种方式)。

有一个稍微不同的管道可以创建两个包,因此更容易将它们的构建分开。 我只想将它们部署为两个具有相同名称和不同分类器的包。

感谢帮助


编辑:已建议使用Maven配置文件。 我可以看出它们会起作用,但它们并不理想。

考虑我在下图中描述的设置 - 有一个CI服务器(TeamCity)。

  • 有一个“入门”版本(来源)。 此构建检出所有必需的源文件。
  • 从这个初始构建中,触发了几个其他构建( 使用xxx / compile 处理 )。 每个构建都会调整 template-pom.xml(填充特定的classifier和其他信息),然后构建并将其工件部署到Artifactory。

在此输入图像描述

如果我决定添加另一个处理构建 ,我希望实现的设置,我需要做的就是添加另一个“分支”。 如果我使用的是配置文件,我还需要在pom.xml文件中添加新的配置文件。

如果我错了,请纠正我。 配置文件似乎能够实现目标,但不是理想情况下,至少在我的情况下。

我强烈反对使用相同GAV的2个(或更多个)不同的pom文件。

但我理解你的需要是由遗留原因引起的。 我自己没有尝试过,但它可能正常工作:保留一个构建(= maven项目),就像现在一样。 在另一个构建中跳过正常部署并手动调用deploy插件的deploy-file目标,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM