2015-10-14 27 views
9

Mavenにマルチモジュールプロジェクトで兄弟のモジュールが見つかりません。Mavenマルチモジュールプロジェクトが兄弟モジュールを見つけることができません

すべてのモジュールでmvn clean installを実行しました。

Product 
+-- MagniCompCommon 
+-- Model 

Modelプロジェクトが持つMagniCompCommon依存関係として:

は、ここで設定です。私はModelmvn clean compileを実行すると、私が手:

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Model 1.0 
[INFO] ------------------------------------------------------------------------ 
[WARNING] The POM for com.magnicomp:MagniCompCommon:jar:1.0 is missing, no dependency information available 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.585 s 
[INFO] Finished at: 2015-10-14T10:09:04-07:00 
[INFO] Final Memory: 5M/15M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project Model: Could not resolve dependencies for project com.magnicomp:Model:jar:1.0: Failure to find com.magnicomp:MagniCompCommon:jar:1.0 in http://download.java.net/maven/2/ was cached in the local repository, resolution will not be reattempted until the update interval of Java.Net has elapsed or updates are forced -> [Help 1] 

あなたが見ることができるように、Mavenはjava.netのレポ(これは親の最初のリポジトリエントリです(Productpom.xml)でMagniCompCommonを見つけようとしています。ここで

は製品pom.xml次のとおりです。ここで

<?xml version="1.0"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.magnicomp</groupId> 
    <artifactId>Product</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 


    <modules> 
    <module>MagniCompCommon</module> 
    <module>Model</module> 
    <module>Common</module> 
    <module>Agent</module> 
    <module>Doc</module> 
    </modules> 

... snip ... 

    <repositories> 
     <repository> 
      <id>Java.Net</id> 
      <url>http://download.java.net/maven/2/</url> 
     </repository> 

MagniCompCommon pom.xml

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

    <parent> 
     <groupId>com.magnicomp</groupId> 
     <artifactId>Product</artifactId> 
     <version>1.0</version> 
    </parent> 

    <!-- <groupId>com.magnicomp.common</groupId> --> 
    <artifactId>MagniCompCommon</artifactId> 
    <packaging>jar</packaging> 

であるあなたは、マルチモジュールMavenプロジェクトをビルドしているときに、モデル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> 

    <parent> 
     <groupId>com.magnicomp</groupId> 
     <artifactId>Product</artifactId> 
     <version>1.0</version> 
    </parent> 

    <artifactId>Model</artifactId> 
    <packaging>jar</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>com.magnicomp</groupId> 
      <artifactId>MagniCompCommon</artifactId> 
      <version>1.0</version> 
     </dependency> 

    </dependencies> 

</project> 

答えて

14

ですからMavenコマンドを実行する必要がありますルートPOM。これは、Productpom.xmlmvn clean installを実行する必要があることを意味します。

取得しているエラーは予期されています:Modelのみ作成しています。 ModelのPOMでは、MavenはMagniCompCommonに依存関係があるので、その依存関係を調べようとします。まず、あなたのローカルレポを検索します:あなたが前にMagniCompCommonをインストールしていないので、それを見つけることができません。その結果、事前定義されたリモートリポジトリ内でそのリポジトリが検索されます(見つからない)。

その後、Model POMに、最初MagniCompCommonのPOMでmvn clean installを実行することによって、これを回避することができるだろうが、これは、ルートPOMに直接Mavenを呼び出すことによって行わはるかに簡単です。適切な順序ですべてのモジュールを正しく構築します(ModelMagniCompCommonに依存するため、MagniCompCommonを最初に作成します。を入力してModelを作成します)。

これはデフォルトのため、<packaging>jar</packaging>という行を削除することができます。

+0

はい、問題でした。私は親の "Product"ディレクトリにいなければなりません。そのような初心者のエラー!どうもありがとうございます! –

0

私はバージョン

<!-- <groupId>com.magnicomp.common</groupId> --> 
<artifactId>MagniCompCommon</artifactId> 
<packaging>jar</packaging> 

そして製品ポンポンで、バージョン1.0

<dependency> 
    <groupId>com.magnicomp</groupId> 
    <artifactId>MagniCompCommon</artifactId> 
    <version>1.0</version> 
</dependency> 

を参照しているを指定MagniCompCommonにポンポンdoesntのに気づいたあなたは、バージョン1.0を指定してみましたMagniCompCommon pomの

+3

バージョンを指定する必要はありません。モジュールは親バージョン(この場合は1.0)から継承します。 – Tunaki

関連する問題