2016-05-24 2 views
2

私は2つのMavenプロジェクトAとBを持っています。
BはAのfat jarに依存します。intellijマルチモジュールプロジェクトは、モジュールをjarファイルではなく依存ファイルとして追加します。

MavenプロジェクトとしてBをインポートするとき、Aはターゲットjarの代わりにModule dependencyとして追加されます。

これを無効にする方法はありますか?

Bさんのpom.xml(依存部分)

<dependency> <groupId>com.xxx.yyy</groupId> <artifactId>A</artifactId> </dependency>

Aさんのpom.xml

(アーティファクトの詳細):

<groupId>com.xxx.yyy</groupId> <artifactId>A</artifactId> <version>trunk-SNAPSHOT</version>

A脂肪ジャーを与えるためにパッケージ化されていますBはバージョンプラグインを使用してAのバージョンを決定しています。

問題:

これら二つはのIntelliJプロジェクトのモジュールです。どのような方法でインポートしても、プロジェクトBの依存関係リストには、プロジェクトAのjarファイルのSNAPSHOT(または特定のバージョン)ではなく、プロジェクトAがモジュール依存として表示されます。このため

、私は/プロジェクトBにインストールパッケージ化しようとするたびに、私はヘルパークラスのいくつかのためにClassNotFoundを見ていますA.

からコンパイルプロジェクトBのためのログ:

Error:(21, 40) java: cannot find symbol 
symbol: class ImmutableMap 
location: package org.xxx.yyy.zzz 

Error:(22, 40) java: cannot find symbol 
symbol: class ImmutableSet 
location: package org.xxx.yyy.zzz 

このクラスファイルは、AのSNAPSHOT jarで見ることができます。

+0

を通じて解決され、あなたはあなたの質問について詳しく説明していただけますか? pom.xml – drJava

+0

更新された質問をpom.xmlで公開することができます。 –

+0

どこ?あなたの質問に変更はありません。 – drJava

答えて

0
<dependency> 
<groupId>com.xxx.yyy</groupId> 
<artifactId>A</artifactId> 
<version>trunk-SNAPSHOT<version> 
</dependency> 

あなたはB'ののpom.xmlにバージョンを追加することによって、そうしてみてくださいすることができ、その後、mvn clean install

+0

推奨どおりに試してみてください。私はpom.xmlを更新し、モジュールを削除して再インポートしました。インポート後、再びプロジェクトAがモジュール依存として表示され、 'mvn clean install'がエラーになりました(コンパイル時にJarファイルの代わりにモジュールコードが考慮されるため) –

+0

プロジェクトのAのpom.xmlパスに移動する必要があります。 "mvn clean install"を実行してから、B's pom.xmlパスにプロジェクトを作成して、同じ場所に作成する必要があります。同じエラーが発生した場合は、このエラーも指定できますか? – drJava

+0

コマンドラインから、変更前後で正常に動作します。エラーはClassNotFoundからIntelliJです。これはプロジェクトBのみです。 –

関連する問題