4

私はgradleプロジェクトを持っています。2 つのサブプロジェクト (common と application) を持つルート Gradle フォルダーがあります。

| -common/
               -build-gradle
| -application/
|              -build.gradle
|build.gradle
|settings.gradle

一般

  • ShadowJar を介して、すべての jar 依存関係を含む JAR ファイルを出力します。
  • Maven 中央リポジトリからの依存関係のみがあり、他の依存関係はありません

応用

  • WARファイルを出力
  • 依存関係として Common の shadowJar があります。
  • Maven 中央リポジトリからの追加の依存関係があります

達成したいこと

アプリケーションでgradle warを実行するとき、すべての Maven 依存関係と Common プロジェクトの ShadowJar を含む jar を作成したいと考えています。

問題は ShadowJar 部分にあります。Application でgradle warを実行すると Common にアーティファクトがビルドされません。shadowJar をビルドして戦争に含めたいと思います。

現在のソリューション これをルートのbuild.gradleに追加しました

subprojects{
    tasks.jar.enabled = false
    artifacts{
        shadowJar
    }
    build.dependsOn(shadowJar);
}

Application/build.gradle には、もう 1 行あります。

compile files('../common/build/libs/common.jar')

次に、ルートでビルド タスクを実行します。どういうわけか、共通プロジェクトが最初にビルドされ、ShadowJar がアプリケーションの WAR に含まれます。

これは最適とは言えません。固定ファイル名を指すのではなく、コンパイル プロジェクト (':common') として定義された Common へのアプリケーションの依存関係を持ちたいと思います。ただし、「プロジェクトをコンパイルする」ステートメントは、明らかに Common モジュールで shadowJar を生成せず、それを Application モジュールの WAR に含めません。

4

0 に答える 0