web-dev-qa-db-ja.com

gradleのビルドタスクで「通常の」jarの代わりにシャドウjarを生成するにはどうすればよいですか?

(これはgradle 2.4を使用しています)

いくつかのサブモジュールに分割された私のプロジェクトの1つでは、 シャドウプラグイン を使用します。これは私のニーズに非常に適しています。メインがあり、プラグインのREADMEで推奨されているように、メインクラスがマニフェストで生成されるように、アプリケーションプラグインを組み合わせて使用​​します。すべてが正常に機能します。

さて、これはSonarQubeプラグインプロジェクトであり、私も(成功しました!) gradle sonar packaginプラグイン を使用します。そして、このプラグインが行うことは、あなたが./gradlew build、「通常の」jarの代わりにソナープラグインを生成します。

ここでサブプロジェクトに対して同じことを行いたいと思いますが、「通常の」プラグインではなくシャドウjarプラグインのみを生成する必要があります...現在、この単純なファイルを使用して両方を生成しています。

buildscript {
    repositories {
        jcenter();
    }
    dependencies {
        classpath(group: "com.github.jengelman.gradle.plugins",
            name:"shadow", version:"1.2.1");
    }
}

apply(plugin: "application");
apply(plugin: "com.github.johnrengelman.shadow");

dependencies {
    // whatever
}

mainClassName = //whatever

artifacts {
    shadowJar;
}

// Here is the hack...

build.dependsOn(shadowJar);

通常のjarではなくシャドウjarのみが生成されるように、このファイルを変更するにはどうすればよいですか?

11
fge

Gradleスクリプトに次の行を追加することで、jarタスクを無効にできます。

// Disable the 'jar' task
jar.enabled = false

したがって、gradleスクリプトを実行すると、次のように表示されます。

:jar SKIPPED

すべてのサブプロジェクトを構成する場合は、ルートbuild.gradleに以下を追加できます。

subprojects {

    // Disable the 'jar' task
    tasks.jar.enabled = false

}
10
MJSG