2017-01-23 5 views
2

この例のPOMファイルを作成したので、各子プロジェクトで複製された依存関係は必要ありません。私の要件は、各プロジェクトごとに第三者バージョンを提供する必要はないということです。各プロジェクトは、bomファイルからライブラリのバージョンを継承する必要があります。私はdocumentation of Maven dependenciesに基づいて例を作成しました。私のMavenのバージョンは、のApache Mavenの3.2.5BOMのバージョンを参照するMavenの子が動作しないのはなぜですか?

私は

[INFO] Scanning for projects... 
[ERROR] The build could not read 1 project -> [Help 1] 
[ERROR] 
[ERROR] The project org.test.testapp:test-app:1.0-SNAPSHOT (/Users/skoya/workspace/test-app/pom.xml) has 2 errors 
[ERROR]  'dependencies.dependency.version' for junit:junit:jar is missing. @ line 22, column 17 
[ERROR]  'dependencies.dependency.version' for commons-cli:commons-cli:jar is missing. @ line 26, column 17 

ルートBOMポンポンファイル

<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/xsd/maven-4.0.0.xsd"> 
     <modelVersion>4.0.0</modelVersion> 

     <groupId>org.test</groupId> 
     <artifactId>bom</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <packaging>pom</packaging> 
     <name>test-dependencies-bom</name> 
     <url>http://myorg.org</url> 

     <properties> 
       <commons-cli.version>1.3</commons-cli.version> 
       <junit.version>3.8.1</junit.version> 
     </properties> 

     <modules> 
      <module>test-dependencies</module> 
     </modules> 
</project> 

テストの依存性/のpom.xml以下のエラーを取得していますです

<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/xsd/maven-4.0.0.xsd"> 
     <modelVersion>4.0.0</modelVersion> 

     <groupId>org.test</groupId> 
     <artifactId>test-parent-pom</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <packaging>pom</packaging> 

     <name>test-parent-pom</name> 
     <url>http://maven.apache.org</url> 
     <parent> 
       <groupId>org.test</groupId> 
       <artifactId>bom</artifactId> 
       <version>0.0.1-SNAPSHOT</version> 
     </parent> 

     <prerequisites> 
       <maven>3.0.0</maven> 
     </prerequisites> 


     <dependencies> 
       <dependency> 
         <groupId>commons-cli</groupId> 
         <artifactId>commons-cli</artifactId> 
         <version>${commons-cli.version}</version> 
       </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
         <version>${junit.version}</version> 
    </dependency> 

     </dependencies> 
</project> 
BOMファイルを参照

Mavenプロジェクトファイル

<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>org.test.testapp</groupId> 
    <artifactId>test-app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>test-app</name> 
    <url>http://maven.apache.org</url> 
    <dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>org.test</groupId> 
     <artifactId>bom</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <type>pom</type> 
     <scope>import</scope> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>commons-cli</groupId> 
     <artifactId>commons-cli</artifactId> 
    </dependency> 
    </dependencies> 
</project> 

答えて

1

2つの問題があります。

  1. は、依存関係の輸入については、輸入ポンポンプロジェクトは、(テスト依存関係/のpom.xml)を定義する必要があります元のサンプルで行われた通り<dependencies>のように、<dependencyManagement>セクションにインポートする必要があります。
  2. そのpomをインポートするプロジェクトは、親pom.xmlではなく依存関係(test-dependencies/pom.xml)を宣言するプロジェクトをインポートする必要があります。

以下の変更を加えてこの問題を修正しました。

テストの依存性/のpom.xml

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.test</groupId> 
    <artifactId>test-parent-pom</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <name>test-parent-pom</name> 
    <url>http://maven.apache.org</url> 

    <parent> 
    <groupId>org.test</groupId> 
    <artifactId>bom</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 

    <prerequisites> 
    <maven>3.0.0</maven> 
    </prerequisites> 

    <dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>commons-cli</groupId> 
     <artifactId>commons-cli</artifactId> 
     <version>${commons-cli.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>${junit.version}</version> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 
</project> 

BOMファイルを参照Mavenプロジェクトファイル

<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>org.test.testapp</groupId> 
    <artifactId>test-app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>test-app</name> 
    <url>http://maven.apache.org</url> 
    <dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>org.test</groupId> 
     <artifactId>test-parent-pom</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <type>pom</type> 
     <scope>import</scope> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>commons-cli</groupId> 
     <artifactId>commons-cli</artifactId> 
    </dependency> 
    </dependencies> 
</project> 

その後、私が構築し、検証することができた、そのプロジェクトのインポートポームは期待される依存関係をもたらしていた:

mvn dependency:tree 
... 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ test-app --- 
[INFO] org.test.testapp:test-app:jar:1.0-SNAPSHOT 
[INFO] +- junit:junit:jar:3.8.1:compile 
[INFO] \- commons-cli:commons-cli:jar:1.3:compile 

親pom.xmlのプロパティで定義されているバージョン番号が引き続き正常に取得されていることに注意してください。これは、プロジェクトを構造化するための完全に有効な方法です。それは私が説明した2つの調整を必要としました。

+0

ありがとうございました。今それは動作します。親pom.xmlの依存関係管理部分を正しく読み込んでいない。 – randominstanceOfLivingThing

関連する問題