[英]Multimodule maven project - exclusions in depenedency
我希望我的ModuleTypeA戰爭將ModuleBase作為依賴項包含在'src / main / java / typeA'包中,並且類似地,我希望ModuleTypeB戰爭將ModuleBase作為包含依賴項包含在'src / main / java / typeB'軟件包中。
這是我的項目結構:
ModuleBase
|
|----> src/main/java/base
|----> src/main/java/typeA
|----> src/main/java/typeB
|----> pom.xml
ModuleTypeA
|
|----> src/main/java/..
|----> pom.xml
ModuleTypeB
|
|----> src/main/java/..
|----> pom.xml
我是Maven的新手,不確定如何實現這一目標。 ModuleBase不能是父項目,因為我需要為此創建一個jar(不能具有包裝類型pom),因此我可以創建一個頂級父項目。
歡迎任何建議。
謝謝
首先,閱讀有關依賴項排除的文章: 可選依賴項和依賴項排除
如果要從ModuleBase構建.war文件,則不能將其作為依賴項,而可以作為ModuleBase的ModuleTypeA的覆蓋,而類似地,ModuleTypeB war也可以作為ModuleBase的覆蓋。 為此,您可以使用Maven War插件: Maven War插件
這樣,要排除軟件包,請在pom.xml中使用以下代碼:
<excludes>
<exclude>src/main/java/typeA</exclude>
</excludes>
更新:
我還沒有嘗試過,但是有兩種方法可以從.jar中排除軟件包。
1)使用Maven Assembly Plugin 。 您可以參考以下示例:
2)使用Maven Jar插件 ,以示例的形式查看此答案:
您可以在ModuleBase中創建不同的程序集,並在ModuleTypeA / B中將其稱為系統依賴項。
您可以使用<systemPath>../module-base/target/rt.jar</systemPath>
將路徑設置為依賴項
一個maven項目中的多個程序集可能會幫助您解決程序集主題。
通常,它應該看起來像這樣:
proj
+ proj-base
+ src/main/java/ // containing base code
+ pom.xml
+ proj-mod-type-a
+ src/main/java/ // containing module a code
+ pom.xml // dependency to proj-base
+ proj-mod-type-b
+ src/main/java/ // containing module b code
+ pom.xml // dependency to proj-base
+ proj-a-web
+ src/main/java // war A source
+ pom.xml // dependency to proj-base and proj-mod-type-b
+ proj-b-web
+ src/main/java // war B source
+ pom.xml // dependency to proj-base and proj-mod-type-a
簡而言之,將您的項目分成有意義的模塊,每個模塊都是依賴的單元。 根據所需的依賴關系構造WAR。
如果proj-base
實際上是您想在其他WAR中重用其內容的WAR,那么您可能會更接近Maven中WAR覆蓋的行為。 但是,我相信基本思想仍然相同:在構建WAR / EAR時更好地模塊化您的項目並具有適當的依賴性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.