将环境相关参数添加到构建中

时间:2015-10-13 18:35:53

标签: maven

在我公司的父POM中,我指定了我们都使用的公司存储库。 URL包含服务器名称和路径。每次我更改POM时,我都会发布一个新版本。

现在想象一下,托管我们的repos的服务器会被重命名。我可以更改父POM中的所有URL(不是问题)并发布具有固定URL的新版本。但我不能更改现有版本的父POM中的URL。

这意味着,我无法重建过去的任何工件。

有没有一些标准的方法可以解决这个问题?像:

  • 中央财产档案
  • 具有固定1.0.0-SNAPSHOT版本的配置POM,可以在任何更改时重新发布吗?

3 个答案:

答案 0 :(得分:2)

从不在您的POM中放置除distMngt之外的存储库。再次 - 从不You have burned your POMs forever.这在Maven中存在,因为当时的回购经理并不存在。多年来这是不好的做法,应该被删除。

始终将Nexus实例与repo组一起使用。这将被添加到settings.xml,这将反映所有内容。

对于那些不相信的人,我是Maven的漫长岁月。

答案 1 :(得分:1)

如果您在父pom中使用存储库并且可能会随着时间的推移而改变,那么最好的策略是在URL中,或者它使用ALIAS(DNS,Apache重定向,重写),特别是不直接使用IP地址,而您不必每次都更改存储库的地址。

示例:

 <repositories>
        <repository>
          <id>myrepo</id>
          <url>http://myrepo.me/content/repositories/public/</url>
        </repository>
     </repositories>

http://myrepo.me/content/repositories/public/ => ip address 1.2.3.4/*/*/

答案 2 :(得分:1)

我们在工作中采用的另一种方法是使用参数替换<distributionManagement>中的网址,如下所示:

<distributionManagement>
  <repository>
    <id>my-repo</id>
    <name>My Release Repo</name>
    <url>${url.deploy.releases}</url>
  </repository>
  <snapshotRepository>
    <id>my-repo</id>
    <name>My Release Repo</name>
    <url>${url.deploy.snapshots}</url>
  </snapshotRepository>
</distributionManagement>

这样,我们使用settings.xml来控制应该部署工件的位置。这样做的好处是,如果您迁移了一个存储库(我们这样做了),您只需更新settings.xml即可获得新版本/版本。

如果您需要返回到早期版本并重新发布(无论出于何种原因),只需检查发布代码,设置settings.xml以指向新的代表并执行mvn clean deploy。< / p>

如果您无法修改settings.xml,则可以随时复制它,更改副本并使用-s标记指出新设置文件。

此方法也适用于<scm>代码。