4

maven1 では、拡張タグを使用して、子プロジェクトに親構成を使用するように指示していました。

親で宣言されたすべての依存関係は、拡張 (子) プロジェクトで利用できました。

現在、maven2 では継承/構成機能を使用しており、すべての子プロジェクトで依存関係 (バージョン番号を除く) を再宣言する必要があります。( how-to-share-common-properties-among-several-maven-projects を参照)

すべての子供たちの間で依存関係の一部を共有したいことを Maven に伝える方法はありますか?

4

1 に答える 1

14

現在、maven2 では継承/構成機能を使用しており、すべての子プロジェクトで依存関係 (バージョン番号を除く) を再宣言する必要があります。

いいえ、あなたはしません。親 pom で宣言された依存関係は継承されます。

すべての子供たちの間で依存関係の一部を共有したいことを Maven に伝える方法はありますか?

<parent>子 POM で要素を宣言するだけです。たとえば、この親 POM の場合:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>my.group.id</groupId>
  <artifactId>parent</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Demo - Parent</name>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <modules>
    <module>child</module>
  </modules>
</project>

そして、子モジュールのこの POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>my.group.id</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <name>Demo - Child</name>
  <artifactId>child</artifactId>
  <packaging>jar</packaging>
</project>

junit の依存関係は、期待どおりに継承されます。

$ mvn 依存関係:ツリー
[情報] プロジェクトをスキャンしています...
[INFO] プレフィックス: 'dependency' を持つプラグインのリポジトリを検索しています。
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[INFO] 建物のデモ - 子
[情報] タスク セグメント: [依存関係: ツリー]
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] [依存関係: ツリー {実行: デフォルト cli}]
[情報] my.group.id:child:jar:1.0-SNAPSHOT
[INFO] \- junit:junit:jar:3.8.1:test
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] ビルド成功
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
...

セクションで依存関係を宣言し<dependencyManagement>いると思われます(別の目的があります)。

于 2010-07-09T18:31:17.910 に答える