2010-09-28 139 views
1

我們的項目有一個像Maven的依賴管理

<dependency> 
    <groupId>apollo.components.cots</groupId> 
    <artifactId>cots-wfs</artifactId> 
    </dependency> 

而且據我瞭解,在Maven2將獲得COTS的世界糧食首腦會議的最新神器的依賴,說<版本> 2.3-20101111.000000-13 < /版本>

的問題是,當我們分支項目,依賴關係保持不變,而當其他開發者發佈一個新的嬰兒牀,WFS說<版本> 2.3-20101222.000000-13 < /版本>這是不BAC kward兼容,構建被破壞。

我試圖避免將代碼合併到分支中,這很痛苦。

那麼當我分支項目時,我需要做些什麼來「凍結」所有的依賴關係? 有沒有簡單的方法來做到這一點?

回答

4

而且據我瞭解,在Maven2將獲得COTS的世界糧食首腦會議的最新神器,說<version>2.3-20101111.000000-13</version>

看起來你正在使用COTS的WFS一個SNAPSHOT依賴(2.3-SNAPSHOT),可能聲明在dependencyManagement部分。

問題是,當我們分支項目時,依賴性保持不變,並且當其他開發人員發佈不兼容的新cots-wfs(...)時,構建被破壞。

事實上,這就是爲什麼你應該簡單地不分行SNAPSHOT依賴的神器,神器發佈的構建應該是可重複的,直到永遠,使用SNAPSHOT依賴擊敗這一點。 Maven發佈插件實際上禁止發佈具有SNAPSHOT依賴關係的POM。

然而,使用versions:lock-snapshots或更好地使用versions:use-releases來使用相應的發佈版本來「鎖定」SNAPSHOT依賴關係是可能的。這實際上是一條路。

順便說一句,Maven Release Plugin可能有助於自動化整個過程。

+0

感謝您的意見。我將使用版本:鎖定快照。使用發行版本的問題在於,它與最新代碼非常不同,因爲代碼正在快速發展。所以我通常在主線上分支。 – portoalet 2010-09-30 14:46:12

0

從某種意義上說,分支意味着您正在創建它的新版本。提升版本號應該可以解決它。

+0

應該推廣哪個版本號?如果我提升工件的版本號,那麼依賴關係仍然不會被凍結,這意味着如果開發者發佈新東西,那麼在構建未來版本時會遇到問題 – portoalet 2010-09-28 12:41:49

0

是的,只需將版本標籤添加到依賴項。如果您不確定當前版本號是什麼,請運行「mvn help:effective-pom」以查看包含當前所有版本號的pom。

+0

Baijens,所以這意味着要修改所有依賴關係的版本標記? – portoalet 2010-09-28 12:46:29

+0

或複製整個有效的pom是這是很多工作給你。這種方式可能會導致一些不需要的配置。 – 2010-09-28 16:47:39