maven-2 - Maven - 依赖继承 - 提供

标签 maven-2 dependency-management

我使用依赖 POM,然后我将其作为依赖包含到另一个项目中。我遇到的问题是,当它将 POM 与这些依赖项聚合在一起时,它会出现在我声明范围的依赖项时,前提是不包括这些依赖项。

是否可以在具有提供范围的依赖项 POM 中包含提供的依赖项?我经常声明我需要什么 API,然后将实现包含为运行时依赖项。

最佳答案

If a dependency is provided why can't that dependency be inherited with the same scope so I don't have to declare it?



以相同的范围继承。鉴于以下父 pom.xml :
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.stackoverflow.Q3597684</groupId>
  <artifactId>root</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>Q3597684 - Root</name>
  <packaging>pom</packaging>
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

以及以下 pom.xml从根工件继承:
<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>root</artifactId>
    <groupId>com.stackoverflow.Q3597684</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <artifactId>child</artifactId>
  <packaging>war</packaging>
  <name>Q3597684 - Child</name>
  <dependencies/>
</project>

运行 mvn dependency:tree从 child 给出以下输出:

$ mvn dependency:tree[INFO] 正在扫描项目...
[信息] 正在搜索带有前缀的插件存储库:'dependency'。
[信息] ----------------------------------------------- -------------------------
[INFO] Q3597684楼- child
[信息] 任务段:[依赖:树]
[信息] ----------------------------------------------- -------------------------
[信息] [依赖:树{执行:默认cli}]
[信息] com.stackoverflow.Q3597684:child:war:1.0-SNAPSHOT
[信息] +- javax.servlet:servlet-api:jar:2.5:provided
[信息]\- junit:junit:jar:3.8.1:test
[信息] ----------------------------------------------- -------------------------
[信息] 构建成功
[信息] ----------------------------------------------- -------------------------

提供的 servlet-api在那里,正如预期的那样。

您是否(错误)使用了 dependencyManagement节?

关于maven-2 - Maven - 依赖继承 - 提供,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3597684/

相关文章:

java - 为我们其他人提供开源代码共享和依赖管理 Java

linux - 在不使用 M2 存储库但使用系统 jar 的情况下使用 Maven 离线构建项目

java - 如何为 Maven 中的某些依赖项定义不同的目标文件夹

java - 在maven中构建pom时找不到包错误

eclipse - 更改 Eclipse 项目以使用 Maven?

maven-2 - 部署 war 时出错(TomCat)

php - Composer .lock : how does it work?

Gradle +PlayFramework : Cannot resolve sources dependency

c# - 你能让一个接口(interface)依赖于一个类吗?

maven - Grails 2.2.x 未解析的依赖项,对以前的工作构建没有任何更改