[英]Conditional transitive dependencies inclusion with maven
我的目標是將一個項目包含到另一個項目中,同時控制應包含的傳遞依賴項。
假設項目Y基於項目X。項目X具有兩個已定義的配置文件,配置文件a和配置文件b:
<project>
...
<profiles>
<profile>
<id>profile-a</id>
<dependencies>
// [A] depednencies
</dependencies>
</profile>
<profile>
<id>profile-b</id>
<dependencies>
// [B] depednencies
</dependencies>
</profile>
<profiles>
</project>
有沒有一種方法可以將項目X包含到項目Y中,並且可以指定要導入項目X的配置文件?
控制傳遞依賴的一種示例方法應該是使用依賴排除,但是我正在尋找一種更復雜的方法(如果可能的話)。
我還有另一個問題涉及配置文件中的依賴關系:自然地,項目X可能有很多類都依賴於配置文件a和配置文件b的依賴關系。
如果使用一個配置文件構建或導入了項目X(如果可能的話),這不會破壞使用另一個配置文件的依賴關系的類的編譯嗎?
謝謝大家的反饋。
與@khmarbaise討論之后,我在maven網站中進行了另外的搜索,結果我偶然發現了這篇文章 。
在此頁面中,有一段涉及從單個源目錄中產生多個唯一JAR的段落,該段落指定了以下內容:
許多抱怨不能將其源代碼分散到多個源目錄的人似乎抱怨不希望分散任何內容,從而使用include和excludes從單個目錄中生成了多個唯一的工件。
為什么不建議這樣做?
這種做法可能會造成混淆和風險。
您可能最終會構建兩個包含相同類的JAR-這表明應該將通用功能抽象為單獨的依賴項。 您可能最終在未意識到的兩個JAR之間引入了依賴關系,並且通常是循環依賴關系。 這表明這些類使用了錯誤的JAR,或者也許所有內容都應該只是一個JAR。
我該怎么做呢?
您仍然應該堅持為每個POM生成一個工件,但這需要具有多個POM,因此需要多個子目錄。 這樣做的好處是,這些引入的目錄不會更改現有代碼的布局,並且在您決定分開時會建立將來的布局。
最初,我在尋找一種方法,可以通過從同一源創建許多工件來管理從一個項目到另一個項目的可傳遞依賴項。
閱讀之后,很明顯,maven鼓勵每pom創建一個工件。
當然,創建項目的單獨模塊仍然是處理從一個項目到另一個項目的依賴關系使用情況的最干凈方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.