首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从顶层模块中排除maven子模块依赖项

从顶层模块中排除maven子模块依赖项
EN

Stack Overflow用户
提问于 2018-08-01 21:13:56
回答 1查看 1.2K关注 0票数 1

我创建了一个包含三个模块的maven父项目:

  • 数据层模块
  • 数据服务模块(使用数据层模块)
  • web-模块(使用数据服务模块)

下面是父pom.xml的一个片段:

代码语言:javascript
运行
复制
<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有一个依赖关系:

代码语言:javascript
运行
复制
<dependencies>
      <dependency>
          <groupId>org.mygroup</groupId>
          <artifactId>data-layer-module</artifactId>
          <version>1.0-SNAPSHOT</version>
      </dependency>
</dependencies>

web-moduledata-service-module有一个依赖关系:

代码语言:javascript
运行
复制
<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中排除在外:

代码语言:javascript
运行
复制
<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依赖项。

如何完成这一配置?

EN

回答 1

Stack Overflow用户

发布于 2018-08-02 09:52:56

如果web模块将在与数据服务层相同的jvm中运行,那么对数据层模块的暂时依赖是必要的--这就是为什么您添加的排除导致应用程序失败。

您可以考虑创建一个简单的api,例如数据服务层api,它显然不依赖于数据层模块,并且由数据服务层正确地实现。

您仍然可以使用多模块maven项目,但是现在您将拥有两个构件--一个web模块和一个数据服务,它们必须分开部署。

这基本上是严格的依赖分析和项目复杂性之间的权衡。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51642346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档