Как создать дистрибутивный архив (zip), содержащий файлы проекта и войны в Gradle - PullRequest
6 голосов
/ 30 июля 2011

Я пытаюсь создать задачу Zip, которая создаст пакет распространения для моего проекта, содержащий файлы jar проекта и war (и, возможно, другие артефакты сборки, созданные задачей assemble).

Итак, япопытался написать этот простой скрипт

task dist(dependsOn: 'assemble', type: Zip){
  into('lib'){
    from 'build/libs' //contains jar and war files
  }
  ... //other stuff
}

Задача dist зависит от assemble, потому что он удобно включает в себя задачи, которые создают файлы jar и war.

Но если я попытаюсь выполнить это,gradle жалуется на это сообщение об ошибке:

Circular dependency between tasks. Cycle includes [task ':assemble', task ':dist'].

Я проверил спецификацию assemble задачи , и ясно написано, что assemble задача автоматически dependsOn всеАрхив задач в проекте, который, очевидно, включает в себя мою задачу dist.И, кажется, нет никакого способа обойти это.

Каков будет правильный способ сделать это в gradle?Как я могу сделать задачу zip, которая зависит от задачи assemble?Я мог бы сделать задачу dist явно зависящей от задач jar и war, но я думаю, что это немного нарушает инкапсуляцию.

Я использую gradle-1.0-milestone-3.

Заранее спасибо!

Ответы [ 2 ]

12 голосов
/ 12 сентября 2011

Вот полный пример зависимости вашего почтового индекса от фляги и военного задания:

task dist(type:Zip){
    from jar.outputs.files
    from war.outputs.files
}
0 голосов
/ 31 июля 2011

Вы можете сделать следующее, чтобы получить все созданные архивы сборки в ваш zip-архив dist:

task dist(type:Zip){
    tasks.withType(AbstractArchiveTask).each{ archiveTask ->
        if(archiveTask!=dist){
            from archiveTask.outputs.files
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...