[英]Copy Maven pom.xml with version change
抱歉,很長的帖子,但我首先必須解釋一下我們的設置:
我們生產了一些核心 jar,這些jar在實際發布的多個其他項目中使用。 現在,我們的許多項目都將Ant與Ivy一起使用。 實際上,所有核心項目嚴格來說都是與常春藤合作的螞蟻。
ivy.xml
文件中,版本號是一個屬性。 此屬性是通用設置的,因為開發人員在我們使用新版本時並未更新此屬性。 這使我們所有的項目(包括核心 jar)保持相同的版本號。 <ivy:makepom>
任務執行此操作。 使用此任務時,版本號將自動替換為屬性。 pom.xml
嵌入到jar中。 pom-snapshot.xml
POM。 這與pom.xml
相同,但是在版本號之后帶有-SNAPSHOT
。 Jenkins進行構建時,它將自動將jar部署到我們的Snapshot存儲庫。 它使用mvn deploy:deploy-file
和pom-snapshot.xml
文件。 這使開發人員可以在jar正式發布之前對其進行試用。
當開發人員對jar感到滿意時,他們可以將該jar提升到我們的Maven Release存儲庫。 本品采用詹金斯促進插件,在pom.xml
,和mvn deploy:deploy-file
。
現在,我們有一些核心 jar項目正在轉移到Maven。 開發人員希望將這個系統保持在原位:每個構建都對我們的Maven存儲庫進行SNAPSHOT部署,然后開發人員可以通過Jenkins插件將選定的構建部署到我們的Maven存儲庫。
馬上:
pom.xml
復制到target
目錄下,並使用mvn deploy:deploy-file
將jar部署到我們的版本庫中。 這是由開發人員使用Jenkins中的Promote插件完成的,而不是針對每個版本。 pom.xml
復制到target. I use
下的pom-snapshot.xml
文件中target. I use
每次構建后, target. I use
mvn deploy:deploy-file`將其部署到Snapshot存儲庫中。 這可行,但是我使用正則表達式來查找pom.xml
的版本號,如果我有一個pom.xml
,其中Super Pom版本(父POM)與pom.xml
的版本相同,則我最終更改了錯誤的版本。
我想知道是否有一個Maven插件,可讓您在更改pom本身的版本號的同時將pom.xml復制到另一個目錄。 還是有更好的方法來處理整個問題? 我可以將Artifactory設置為不檢查正在部署的內容與pom.xml
之間的版本一致性,但這最終給我們帶來了OSGI項目和開發人員無法跟上版本號的問題。
總是有maven-exec-plugin,您幾乎可以執行任何操作。 但是我認為這不是一個好主意。 由於Maven始終遵循約定,因此您最好考慮轉向使用Maven的便捷過程。 在開發階段使用SNAPSHOT版本,並准備/執行發行版以將SNAPSHOT版本轉換為發行版。 在這里檢查maven-release-plugin它可以執行版本更新,VCS更新等。
我發現了maven-version-plugin可以滿足我的需求。 我將pom.xml
復制到新目錄,在該pom.xml
上運行versions:set
,然后將pom.xml
移至pom-snapshot.xml
並將pom.xml.versionsBackup
移至pom.xml
。
所有這些都在我們的父項目pom.xml
,該項目設置了當前的版本號,Java默認值,站點默認值等,因此各個項目的pom.xml文件仍然干凈簡潔。 一切都在后台發生。
我對設置不滿意,但是它與我們的其他項目及其流程兼容,因此開發人員不必擔心任何設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.