我创建了一个包含三个模块的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依赖项。
如何完成这一配置?
发布于 2018-08-02 09:52:56
如果web模块将在与数据服务层相同的jvm中运行,那么对数据层模块的暂时依赖是必要的--这就是为什么您添加的排除导致应用程序失败。
您可以考虑创建一个简单的api,例如数据服务层api,它显然不依赖于数据层模块,并且由数据服务层正确地实现。
您仍然可以使用多模块maven项目,但是现在您将拥有两个构件--一个web模块和一个数据服务,它们必须分开部署。
这基本上是严格的依赖分析和项目复杂性之间的权衡。
https://stackoverflow.com/questions/51642346
复制相似问题