在我公司的父POM中,指定了我們都使用的公司存儲庫。這些URL包含服務器名稱和課程路徑。每次我更改POM時,我都會發佈一個新版本。將環境相關參數添加到版本
現在想象一下,託管我們的倉庫的服務器將被重命名。我可以更改父POM中的所有URL(不是問題),併發布帶有固定URL的新版本。但是我無法更改父POM的現有版本中的URL。
這意味着,我無法重建過去的任何神器。
有沒有一些標準的方法來解決這個問題?像:
- 中央屬性文件
- 的配置POM具有固定1.0.0快照版本,即得到再版上是否有變化?
在我公司的父POM中,指定了我們都使用的公司存儲庫。這些URL包含服務器名稱和課程路徑。每次我更改POM時,我都會發佈一個新版本。將環境相關參數添加到版本
現在想象一下,託管我們的倉庫的服務器將被重命名。我可以更改父POM中的所有URL(不是問題),併發布帶有固定URL的新版本。但是我無法更改父POM的現有版本中的URL。
這意味着,我無法重建過去的任何神器。
有沒有一些標準的方法來解決這個問題?像:
如果您在父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/*/*/
你從未除了distMngt在POM放倉庫。再次 - 從來沒有。 You have burned your POMs forever.這存在於Maven中,因爲回購經理當時並不存在。多年來這是不好的做法,應該刪除。
始終使用帶回購組的Nexus實例。這將被添加到您的settings.xml
,這將反映一切。
對於那些不相信,我是漫長的一年的Maven提交者。
好吧,好吧,我相信你:)但是,這樣如何:我爲每個JBoss版本都有一個存儲庫。每個項目應該使用OLNY(對應於項目的JBoss版本)。另外,我希望避免每次新的jboss版本到達時更新所有開發人員的所有settings.xml。 –
@BorisBrodski這是一個大腦死亡的方法。回購可以託管儘可能多的版本,只要你喜歡。即使您選擇了我不建議的路線,也請告訴您的Nexus管理員代理這些回購並將這些代理添加到公共組中。你的開發者甚至不會注意到這一點。它會工作。充其量,您可以爲Nexus中的這些回購庫創建路線目標。 –
使所有回購項目都可用,使得使用錯誤版本變得非常容易。我想確保項目使用的只有依賴關係,以後可以通過JBoss獲得。如果使用了版本範圍(比如,經常在p2版本中),那麼添加新版本可能會破壞舊版本。任何想法?謝謝!! –
,我們採用在工作中的另一種方法是用參數來替換<distributionManagement>
的URL,就像這樣:
<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
。
如果您不能修改settings.xml
您可以隨時複製它,更改副本並使用-s
標誌指出新的設置文件。
此方法也適用於<scm>
標籤。
你用項目提交你的'settings.xml'? (否則,你可以檢出一箇舊標籤並將其部署到新的URL。) –
不,絕對不是。設置文件通常包含身份驗證憑證,您不希望將其添加到您的VCS中。你提到的方法不是很好的做法。假設您簽出一箇舊標籤並更改設置文件。如果您提交,則構建與標記不相同。如果你不承諾,那麼你已經建立你不能重現。 Maven的原則之一是確保你有可重複的構建。 – Daniel
好吧,現在我明白你的意思了。我想到的主要是這種方法。可悲的是,'settings.xml'結合了用戶和項目首選項。我將嘗試使用全局和用戶的'settings.xml'文件來分離這些概念。我將爲所有用戶提供相同的全局'settings.xml'和URL(可能通過一些共享網絡目錄)。 –
這不是最好的策略。 –
該公司的DNS不合作:(。我在這裏看到的唯一方法是將別名放入所有開發人員PC的lmhosts中。但這不是一個很好的解決方案,恕我直言。 –
我認爲我們不能觸摸settings.xml –