14

(这是使用 gradle 2.4)

对于我的一个项目,分为几个子模块,我使用了shadow 插件,它非常适合我的需求;它有一个 main,并且根据插件自述文件的建议,我将应用程序插件与它结合使用,以便在清单中生成 Main-Class,一切正常。

现在,这是一个 SonarQube 插件项目,我还使用(成功!)gradle sonar packagin plugin。这个插件的作用是,当你./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?

4

1 回答 1

13

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

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

所以,当执行 gradle 脚本时,它会显示

:jar 跳过

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

subprojects {

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

}
于 2015-05-18T17:45:32.177 回答