依存関係の POM を利用して、依存関係として別のプロジェクトに含めます。私が抱えている問題は、それらの依存関係でPOMを集約しているときに、スコープの依存関係を宣言すると表示されますが、それらは含まれていません。
提供された依存関係を、提供されたスコープを持つ依存関係 POM に含めることは可能ですか? 私はよく、必要な API を宣言してから、実行時の依存関係として実装を含めます。
依存関係の POM を利用して、依存関係として別のプロジェクトに含めます。私が抱えている問題は、それらの依存関係でPOMを集約しているときに、スコープの依存関係を宣言すると表示されますが、それらは含まれていません。
提供された依存関係を、提供されたスコープを持つ依存関係 POM に含めることは可能ですか? 私はよく、必要な API を宣言してから、実行時の依存関係として実装を含めます。
依存関係が提供されている場合、なぜその依存関係を同じスコープで継承できないので、宣言する必要がないのですか?
同じスコープで継承されます。次の親が与えられた場合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
セクションを(間違って)使用していますか?