如何让 gradle 的构建任务生成“常规”jar 的影子 jar ?

2022-09-04 03:20:50

(这是使用 gradle 2.4)

对于我的一个项目,分成几个子模块,我使用阴影插件,它非常适合我的需求;它有一个main,并且按照插件的README的建议,我使用应用程序插件与它结合,以便在清单中生成Main-Class,一切都运行良好。

现在,这是一个SonarQube插件项目,我也使用(成功!)gradle sonar packagin插件。这个插件的作用是,当你,生成声纳插件而不是“常规”jar。./gradlew build

我希望在这里为我的子项目做同样的事情,除了我希望它只生成影子罐插件而不是“常规”插件......现在我使用这个简单的文件生成两者:

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

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

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

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

:罐子跳过

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

subprojects {

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

}

答案 2

推荐