[英]Exclude maven sub modules dependencies from top level module
我用三個模塊創建了一個Maven父項目:
這是父pom.xml的片段:
<groupId>org.mygroup</groupId>
<artifactId>myArtifact</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>data-layer-module</module>
<module>data-service-module</module>
<module>web-module</module>
</modules>
data-layer-module
pom.xml
包含對其他模塊的依賴關系(僅包含其外部依賴關系)。
data-service-module
在其pom.xml
具有與data-layer-module
的依賴關系:
<dependencies>
<dependency>
<groupId>org.mygroup</groupId>
<artifactId>data-layer-module</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
web-module
與data-service-module
有依賴關系:
<dependency>
<groupId>org.mygroup</groupId>
<artifactId>data-service-module</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
一切都很好,但是我不希望web-module
能夠訪問data-layer-module
。 我需要強制執行三層Web服務數據模型。 此配置不是這種情況。
我顯然嘗試過手動將其從web-module
pom.xml
排除:
<dependency>
<groupId>org.mygroup</groupId>
<artifactId>data-service-layer</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.mygroup</groupId>
<artifactId>data-layer-module</artifactId>
</exclusion>
</exclusions>
</dependency>
但這會導致編譯錯誤,因為data-service-module
找不到其data-layer-module
依賴性。
如何配置?
如果Web模塊將與數據服務層在同一jvm中運行,則必須對數據層模塊具有暫時依賴性-這就是為什么您添加的排除導致應用程序失敗的原因。
您可以考慮制作一個簡單的api,例如data-service-layer-api,它顯然不依賴於data-layer-module,並由data-service-layer正確實現。
您仍然可以使用多模塊Maven項目,但是現在您將擁有2個構件-一個Web模塊和一個數據服務,必須將它們分開部署。
基本上,這是嚴格依賴關系分析和項目復雜性之間的權衡。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.