Maven - 依赖继承 - 提供

时间:2010-08-30 03:29:13

标签: maven-2 dependency-management

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

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

1 个答案:

答案 0 :(得分:19)

  

如果提供了依赖项,为什么不能使用相同的范围继承该依赖项,所以我不必声明它?

继承了相同的范围。给定以下父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会得到以下输出:

$ mvn dependency:tree[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'dependency'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Q3597684 - Child
[INFO]    task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] com.stackoverflow.Q3597684:child:war:1.0-SNAPSHOT
[INFO] +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] \- junit:junit:jar:3.8.1:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------

提供的servlet-api就像预期一样。

您是否(错误)使用dependencyManagement部分?

相关问题