如何让gradle的构建任务生成"常规"的影子jar _instead_。罐子?

时间:2015-05-18 17:20:07

标签: java gradle gradle-shadow-plugin

(这是使用gradle 2.4)

对于我的一个项目,分成几个子模块,我使用shadow plugin,它非常适合我的需要;它有一个main,并且根据插件的README的推荐,我使用应用程序插件与它一起使用,以便在清单中生成Main-Class,一切运行良好。

现在,这是一个SonarQube插件项目,我也使用(成功!)gradle sonar packagin plugin。这个插件的作用是,当你./gradlew build生成声纳插件而不是#34;常规"广口瓶中。

我希望在这里为我的子项目做同样的事情,除了我希望它只生成阴影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?

1 个答案:

答案 0 :(得分:9)

您可以通过将以下行添加到gradle脚本来禁用jar任务:

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

因此,在执行gradle脚本时,它将显示

  

:jar SKIPPED

如果您希望配置所有子项目,则可以将以下内容添加到根build.gradle

subprojects {

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

}