我試圖自動釋放相互依存的項目。這是場景。我有兩個項目:A和B.項目B依賴於項目A.以下是在自動過程中需要執行的步驟:Maven發佈插件,版本插件和快照
- 發佈項目A使用maven-release-plugin。 (我知道如何做到這一點)。這是我所定義的目標序列: 發佈:乾淨發佈:準備-DcommitByProject =真-DautoVersionSubmodules =真正的釋放:執行
部署項目中的最新快照版本到存儲庫。 (使用簡單的部署正在工作,但有一個小問題,我在下面介紹)
在完成發佈之前,將項目B中的項目A的SNAPSHOT依賴項版本更新爲最新版本。爲了達到這個目的,我在項目B的POM文件中設置了準備目標這樣(clean verify versions:use-latest-versions versions:commit)。
一切似乎工作正常。
現在我想要的是,一旦發佈完成,項目B中的項目A依賴項到發佈期間由發佈版設置的最新SNAPSHOT版本:prepare插件。
我想出瞭解決的辦法是做一個行家的發佈後正確的項目部署快照:被執行死刑執行。 (項目一個新的目標序列:發佈:乾淨發佈:準備-DcommitByProject =真-DautoVersionSubmodules =真正的釋放:執行全新安裝部署)
然後,我可以執行版本:用未來的快照在項目B的發佈週期結束時。 (項目B的新目標序列:版本:clean release:prepare -DcommitByProject = true -DautoVersionSubmodules = true release:執行版本:use-next-snapshots)。在這裏我限制我的版本插件只處理項目A的依賴關係。
問題在於,當我執行項目A的目標時,Maven會使用舊版本而不是增量版本部署SNAPSHOT。所以如果項目A發佈之前的版本是1.1-SNAPSHOT。發佈後的版本現在是1.2-SNAPSHOT。發佈版本將爲1.1。但是,部署的項目A快照版本是1.1-SNAPSHOT而不是1.2-SNAPSHOT。
我猜maven執行maven-release-plugin目標後,maven並沒有更新內存中的pom。