2017-04-07 9 views
1

私はgradleビルドのプロジェクトAを持っています。私はgradleビルドと別のプロジェクトBを持っています。私は、プロジェクトBのジャーをプロジェクトAの戦争に取り入れたいと思っています。プロジェクトBのビルドスクリプトをプロジェクトAのビルドスクリプトから呼び出すことができます(下記参照)。
しかし、プロジェクトBのjarをタスクbuildBの出力ファイルとして設定することはできません。GradleBuildタスクから別のgradleビルドスクリプトのタスクから出力ファイルを設定する方法は?

タスクBの出力ファイルとしてプロジェクトBのjar(タスクjarの出力ファイル)を設定する方法はありますか?

task buildB(type: GradleBuild) { 
    buildFile = "../BProject/build.gradle" 
    tasks = ["clean", "jar"]  // jar task produce xxx.jar as it's outputs.files 

    // HERE, any script to set xxx.jar as outputs.files of task buildB??? 
} 

war { 
    from (buildB) {    // can not get xxx.jar from buildB 
     into "WEB-INF/classes" 
    } 
} 
+0

私はあなたがマルチモジュールプロジェクトを設定し、型プロジェクトの 'compile'依存関係を定義する必要がありますね。 – Opal

答えて

0

これは私がしたことです。

/settings.gradle

include 'AProject', 'BProject' 

/AProject/build.gradle

task buildB(type: GradleBuild) { 
    buildFile = "../BProject/build.gradle" 
    tasks = ["clean", "jar"]  // jar task produce xxx.jar as it's outputs.files 
} 

war { 
    dependsOn buildB 
    doFirst { 
     from (project(':BProject').tasks['jar']) { 
      into "WEB-INF/classes" 
     } 
    } 
} 
2

おそらくmulti moduleプロジェクトを構成し、project -scopeの依存関係を定義する必要があります。

回答の完全な回答は長くなるので、hereあなたはどのようにそれを行うことができるかを示すデモを見つけることができます。

デモは2つのプロジェクトで構成されています。 1つのプロジェクトは戦争のために建設され、戦争のために建設された別のプロジェクトに依存しています。 プロジェクトをビルドすると、bが自動的に作成され、jarファイルに含まれます。

+0

お返事ありがとう、オパール。しかし、buildAはbuildBのjarに依存せず、jarをダウンロード可能なリソースとしてのみ使用します。したがって、プロジェクトBをコンパイル依存として定義する必要はありません。 しかし、あなたの答えとgithubソースは私にマルチプロジェクトを考えさせるので、私は解決策を見つけ出しました。再度、感謝します! – hanjoonk

関連する問題