Есть ли способ выполнить определенную задачу в задаче сборки? - PullRequest
0 голосов
/ 14 мая 2019

Я хочу скопировать архивные файлы подмодулей в корневой каталог сборки проекта при выполнении задачи сборки корневого проекта

task archive(type: Zip) {
    dependsOn copyWars

    archiveName = "${project.name}-${version}.zip"
    destinationDir = file('build/dist')
    from 'build/libs'
    exclude "*.zip"
    includeEmptyDirs = false
}

Я уже пробовал с build.dependsOn archive и build.finalizedBy archive

Я хочу, чтобы zip-файл корневого модуля содержал war-файл подмодуля при выполнении задачи сборки корневого модуля.Пусть a, b два подмодуля, а c - корневой модуль.Таким образом, c.zip должен содержать a.war & b.war.Но файл c.zip не создается.Может быть, я делаю неправильный подход.Пожалуйста, кто-нибудь покажет мне правильный путь.

1 Ответ

0 голосов
/ 15 мая 2019

Допустим, у вас есть два подпроекта war1 и war2, которые производят артефакт war: должна работать следующая конфигурация в скрипте корневого проекта:

build.gradle (корневой проект)

// copy war artifacts from sub-projects
task copyWars(type: Copy){
    into "build/libs"
    from project("war1").war
    from project("war2").war
}

// create archive with content from  'build/libs' directory
task archive(type: Zip) {
    dependsOn copyWars
    archiveName  = "${project.name}-${version}.zip"
    destinationDir  = file('build/dist')
    from 'build/libs'
    exclude "*.zip"
    includeEmptyDirs = false
}
// add 'archive' task to the main "build" lifecycle
build.dependsOn archive

Вы также можете упростить и избавиться от copyWars (если целью этой задачи является только копирование войн из подпроектов в корневой проект):

task archive(type: Zip) {
    dependsOn copyWars
    archiveName  = "${project.name}-${version}.zip"
    destinationDir  = file('build/dist')
    from 'build/libs'
    from project("war1").war
    from project("war2").war        
    exclude "*.zip"
    includeEmptyDirs = false
}
build.dependsOn archive
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...