2016-06-17 6 views
0

私は問題があります。つまりMavenは依存関係を無視しているように見えますが、階層内に表示する必要があります。Maven階層依存関係の検索

私は、次のしているプロジェクト階層:

--projA
--sub、親1
---- projB
----

すべてのレベル

<parent>タグを介してリンクされているprojC 。 sub-parent1は、モジュールとして宣言され、依存関係は宣言されていないので、 projBおよび projCがあります。しかし projBprojAに依存しています。 sub-parent1モジュール全体を構築すると、 projBsub-parent1を認識し、 sub-parent1parentを認識しており、依存関係( projA)が分かっているため、 projAがビルドされません。しかし、私が sub-parent1全体を構築するときはいつも、それを構築しません。例えば、 -pl projB -am clean installです。
何かお手伝いしました。

編集: この構造を表す構造を作成しました。サブ親を構築しよう:dropmefiles.com/5l42j

編集: 親ポンポン:

<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>test</groupId> 
    <artifactId>parent</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 


    <modules> 
     <module>projA</module> 
     <module>sub-parent1</module> 
    </modules> 

</project> 

projA:

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

    <parent> 
     <groupId>test</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0</version> 
    </parent> 

    <modelVersion>4.0.0</modelVersion> 
    <artifactId>projA</artifactId> 
    <version>1.0</version> 

</project> 

サブ親1:

<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>test</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0</version> 
    </parent> 

    <artifactId>sub-parent1</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 

    <modules> 
     <module>projB</module> 
    </modules> 

</project> 

projB :

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

    <parent> 
     <groupId>test</groupId> 
     <artifactId>sub-parent1</artifactId> 
     <version>1.0</version> 
    </parent> 

    <modelVersion>4.0.0</modelVersion> 
    <artifactId>projB</artifactId> 
    <version>1.0</version> 

    <dependencies> 
     <dependency> 
      <groupId>test</groupId> 
      <artifactId>projA</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 

</project> 

編集: 私はMaven multi module project cannot find sibling moduleと同じ解決策を持っていましたが、この問題はマルチモジュールだけでなくマルチレベル(モジュールのいくつかのレベル)のプロジェクトと人物を明示的にビルドするよう指示していない依存関係も同様です。

ソリューション: だから、唯一の解決策があるようです - あなたが構築する必要があり、私の場合には、それは親(その親が現在のディレクトリである)とアドレスモジュールとなり、最上位レベルのPOMから、このようなマルチレベル構造を構築親からの相対パスで指定します。それは、その結果:

mvn -pl sub-parent1/projB -am clean install 

順序は次のようになります - 最上位レベルのPOMから、このようなマルチレベル構造を構築し、私の場合には、それが親になります

[INFO] Reactor Build Order: 
[INFO] 
[INFO] parent 
[INFO] projA 
[INFO] sub-parent1 
[INFO] projB 
+0

あなたはあなたのPOMのすべてを投稿することができますか?たぶん、バージョンの不一致がありますか? – Tunaki

+0

@Tunakiここでは、この構造を表す構造を作成しました。サブ親をビルドしてみてください:http://dropmefiles.com/5l42j – user3177112

+0

@Tunakiはpomsを追加しました – user3177112

答えて

0

だから、唯一の解決策であると思われます(親は現在のディレクトリです)、親からの相対パスで構築する必要があるアドレスモジュールです。それは、その結果:

mvn -pl sub-parent1/projB -am clean install 

順序は次のようになります。

[INFO] Reactor Build Order: 
[INFO] 
[INFO] parent 
[INFO] projA 
[INFO] sub-parent1 
[INFO] projB