Как сделать так, чтобы задача сборки gradle генерировала теневую банку _instead_ из "обычной" банки?

(это использует Gradle 2.4)

Для одного из моих проектов, разбитых на несколько подмодулей, я использую плагин shadow, который очень хорошо подходит для моих нужд; у него есть основной, и, как рекомендовано плагином README, я использую плагин приложения вместе с ним, чтобы основной класс генерировался в манифесте, все работает хорошо.

Теперь это проект плагина SonarQube, и я также использую (успешно!) Плагин Gradle Sonar Packagin. И что этот плагин делает, когда вы ./gradlew build, генерируйте плагин сонара вместо "обычного" фляги.

Я хочу сделать то же самое для моего подпроекта здесь, за исключением того, что я хочу, чтобы он генерировал только плагин shadow 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);

Как мне изменить этот файл так, чтобы генерировался только теневой сосуд, а не обычный?

1 ответ

Вы можете отключить задачу jar, добавив следующие строки в ваш скрипт gradle:

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

Таким образом, при выполнении скрипта gradle, он покажет

:jar Пропущенный

Если вы хотите настроить все подпроекты, то вы можете добавить следующее в свой корневой build.gradle

subprojects {

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

}
Другие вопросы по тегам