13

依存関係の POM を利用して、依存関係として別のプロジェクトに含めます。私が抱えている問題は、それらの依存関係でPOMを集約しているときに、スコープの依存関係を宣言すると表示されますが、それらは含まれていません。

提供された依存関係を、提供されたスコープを持つ依存関係 POM に含めることは可能ですか? 私はよく、必要な API を宣言してから、実行時の依存関係として実装を含めます。

4

1 に答える 1

20

依存関係が提供されている場合、なぜその依存関係を同じスコープで継承できないので、宣言する必要がないのですか?

同じスコープで継承されます。次の親が与えられた場合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] プロジェクトをスキャンしています...
[INFO] プレフィックス: 'dependency' を持つプラグインのリポジトリを検索しています。
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] 建物 Q3597684 - 子
[情報] タスク セグメント: [依存関係: ツリー]
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] [依存関係: ツリー {実行: デフォルト cli}]
[情報] com.stackoverflow.Q3597684:child:war:1.0-SNAPSHOT
[情報] +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] \- junit:junit:jar:3.8.1:test
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] ビルド成功
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------

期待どおり、提供servlet-apiされています。

あなたはおそらくdependencyManagementセクションを(間違って)使用していますか?

于 2010-08-30T03:46:07.427 に答える