2016-04-29 16 views
9

WARをビルドするルートプロジェクトと、JARをビルドする2つの子プロジェクトがあります。ルートプロジェクトは、このように子プロジェクトを参照:Gradle:生成されたWARファイルには、子プロジェクトからのJARの2つのバージョンがあります。

apply plugin: 'war' 

jar.enabled = false 
war { 
    dependencies { 
     runtime project(':application1') 
     runtime project(':application2') 
    } 
} 

アプリケーション2は、アプリケーション1に依存します:リポジトリから1、ちょうど建て別:

dependencies { 
    compile '...:application1:1.+' 
} 

WARファイルはapplication1.jarの2つのバージョンが含まれています。

EDIT:アプリケーション2はアプリケーション1をJARとして使用しなければなりません。これは、埋め込み型のJettyを使用してEclipseでのデバッグを簡略化するためです:Eclipseは自動的にapplication1.jarをJettyサーバーの起動設定のクラスパスに追加します。

+0

なぜapplication2はapplication1に依存しているのですか?それはしないでください。 –

+0

依存関係はどのように指定する必要がありますか? – isobretatel

+3

'コンパイルプロジェクト( ':application1')'。 –

答えて

0

application1プロジェクトへの依存関係は、ルートプロジェクトとapplication2に対して異なって指定されています。

あなたのapplication2は、いくつかのリポジトリ内のライブラリに依存して作成されましたが、ルートプロジェクトはサブプロジェクトと同じように依存しています。 Gradleは、サブプロジェクトのアーティファクトと同じ、レポ内のライブラリの一部が同じであると判断できません。あなたが同じLIBの2つのバージョンを取得したくない場合

、あなたが同じライブラリからそれが依存して行う必要があります。どちらか

runtime project(':application1') 

としてとにかく
compile '...:application1:1.+' 

または

として、両方のケースで同じサブプロジェクトに依存するのではなく、いくつかのプロジェクトではなく、レポのライブラリに依存するようにするのが好ましいと思われます。

+0

それは私のユースケースに役立つものではありません。質問の私の編集を参照してください。 – isobretatel

+0

@isobretatel唯一の方法は、提供されている依存関係の1つを宣言することです。試してみましたか? – Stanislav

+0

>>提供された依存関係の1つを宣言<< - どのように? – isobretatel

関連する問題