2013-08-16 104 views
0

我的多模塊項目由公共(開源)和私有(未公開)模塊組成。我需要創建一個引用master-public和master-private的master-all pom文件,以便一些插件&命令知道所有項目(例如cobertura)。因此,所有人都是私人的,因爲它引用了主 - 私人。避免在maven多模塊項目中引用parent pom

的問題是,主公衆應該引用其父主所有這些是私人的,所以公共模塊的用戶只需將無法進行編譯:

<groupId>group</groupId> 
<artifactId>master-public</artifactId> 
<parent> 
    <groupId>group</groupId> 
    <artifactId>master-all</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</parent> 

嵌套母市民主-private可能是maven的解決方案,但會對git造成混亂。

有沒有一個乾淨的方法來做到這一點?

回答

2

你可以讓你的主 - 私人蔘考你的主 - 公衆。但根據我的經驗,最好將它們完全分開。最終,主公衆將更多地被調整爲開源,可能部署到Maven Central,而主 - 私人將部署到您的內部存儲庫,並且可能有一些特殊的設置在企業環境中才有意義。將你所需要的任何東西從你的主 - 私人複製到你的主 - 公衆,並將兩者斷開。

+0

我同意,但您將如何安排插件(例如cobertura)與public + private一起工作。例如,如果我想讓公共API的測試保留在私有部分中,我需要從一個能夠訪問它們的pom文件啓動cobertura,以便在開始測試之前對API進行檢測,如果我有一個簡單的依賴private-> public。 – Martin

+0

你應該認真考慮公開測試你的公共產品。如果你完全無法做到這一點,你可以考慮將測試過的二進制文件部署到一個Maven倉庫中,並在運行你的私人測試時使用它們。 – rec

+0

它實際上不回答這個問題,但鼓勵工作不同,所以我驗證了答案:)謝謝 – Martin