如何将公共项目Maven工件部署到不同的远程存储库?

时间:2015-06-22 15:17:27

标签: maven

我是一个团队,对公共开源代码项目进行本地更改,具有以下一般结构:

<parent>
  <groupId>org.sonatype.oss</groupId>
  <artifactId>oss-parent</artifactId>
  <version>7</version>
</parent>

<groupId>edu.cmu.sphinx</groupId>
<artifactId>sphinx4-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

<modules>
  <module>sphinx4-core</module>
  <module>sphinx4-data</module>
  <module>sphinx4-samples</module>
</modules>

我应该如何将新生成的快照工件部署到我们团队的内部远程存储库?我应该更新sphinx-4父母或其子模块的GAV吗?我打了一个指向我们的远程存储库的部分,但现在我不确定如何将这些新生成的工件指定为依赖项而不是CMU的Sonatype存储库上的工件。编辑POM感觉不好,但也许这是一种糟糕的直觉,我应该为我们的团队接受全新的POM。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

要将创建的工件部署到另一个maven存储库,您需要添加或更改pom的<distributionManagement>部分。或者添加一个并替换父级中的一个。 结果是部署目标将工件上传到新位置。

此外,我会更改您修补或修改的工件的版本(如果不可能对该项目做出贡献)。例如,通过添加1.0-mycompany-p1-SNAPSHOT。我不仅会增加版本号 - 将来可能会发生冲突。

我不建议更改artifactId和/或groupId。原因是如果maven也表现为传递依赖,则允许maven将工件解析为“相同”工件。想象一下,你会将commons-logging更改为commons-logging-patched(作为新的artifactId。你可能最终会在类路径中使用两个jar,因为maven不会识别它几乎相同的东西。

我同意你的直觉:不使用原始版本(pom.xml)进行篡改的方法通常是最好的方法。

相关问题