Maven - Dependency Inheritance - Provided

后端 未结 1 1588
伪装坚强ぢ
伪装坚强ぢ 2021-02-14 03:52

I make use of dependency POMs which I will then go and include into another projects as as dependency. The problem I am having is while it aggregates the POM with those depende

相关标签:
1条回答
  • 2021-02-14 04:06

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

    It is inherited with the same scope. Given the following parent 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>
    

    And the following pom.xml that inherits from the root artifact:

    <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>
    

    Running mvn dependency:tree from the child gives the following output:

    $ 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] ------------------------------------------------------------------------
    

    The provided servlet-api is there, as expected.

    Are you maybe (mis)using the dependencyManagement section?

    0 讨论(0)
提交回复
热议问题