2015-05-18 2 views
6

(здесь используется градация 2.4)Как создать задачу построения градиента создать теневую банку _instead_ из «обычной» банки?

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

Теперь это проект плагина SonarQube, и я также использую (успешно!) gradle sonar packagin plugin. И что делает этот плагин, когда вы ./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); 

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

+0

Лучше использовать 'assemble.dependsOn (shadowJar);' так что ваши тесты также используют shadowJar. Обратитесь к строительному трубопроводу ИЗОБРАЖЕНИЕ: https://docs.gradle.org/current/userguide/java_plugin.html – Zasz

ответ

8

Вы можете отключить задачу банку, добавив следующие строки в Gradle сценария:

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

Таким образом, при выполнении Gradle сценария, он будет показывать

: баночка SKIPPED

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

subprojects { 

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

} 
+0

Ну, это только для этого конкретного проекта, но хм, мне действительно не нужны банки для любого проекта ... – fge

+0

@fge также есть возможность полностью удалить задачу, однако вы должны убедиться, что все задачи, зависящие от задачи jar, должны быть сопоставлены (проще отключить) – MJSG

+0

Хорошо, я попробую, как только я получите время, чтобы сделать это, но этот подход выглядит очень многообещающим! Уже поддержал, я буду держать вас в курсе ... – fge

Смежные вопросы