Задача Gradle Zip сделать несколько поддеревьев? - PullRequest
12 голосов
/ 16 мая 2011

Мы пытаемся создать небольшой сложный Zip-файл в Gradle из нескольких исходных деревьев файловой системы, но независимо от того, сколько спецификаций into мы даем, все они помещают их в одну. Можно ли это сделать в Gradle?

build/libs/foo.jar --> foo.jar
bar/*              --> bar/*

Вместо этого мы получаем:

build/libs/foo.jar --> bar/foo.jar
bar/*              --> bar/*

Используя это:

task installZip(type: Zip, dependsOn: jar) {
    from('build/libs/foo.jar').into('.')
    from('bar').into('bar')
}

Любая помощь будет оценена.

РЕДАКТИРОВАТЬ: Gradle 1,0 миль-3

Ответы [ 2 ]

22 голосов
/ 16 мая 2011

Попробуйте это:

task zip(type: Zip) {
    from jar.outputs.files
    from('bar/') {
        into('bar')
    }
}

Во-первых ... банка должна быть в корне / почтового индекса (что, кажется, то, что вы хотите). Во-вторых, указав из jar.outputs.files, существует неявное dependsOn в задаче jar, так что это показывает другой способ выполнить то, что вы хотите. За исключением этого подхода, если имя банки меняется со временем, это не имеет значения. Дайте мне знать, если вам нужна дополнительная помощь.

7 голосов
/ 17 мая 2011

Очевидно, что комментарии к ответу не позволят удобным способом показать больше кода ... или это не очевидно :) У меня есть проект для клиента ... поэтому я не могу поделиться полный файл проекта / сборки. Вот что я могу поделиться (я изменил специфический акрон проекта на XXX):

task zip(type: Zip) {

    from jar.outputs.files

    from('scripts/') {
        fileMode = 0755
        include '**/runXXX.sh'
        include '**/runXXX.bat'
    }
    from('lib/') {
        include '**/*.jar'
        into('lib')
    }
    from('.') {
        include 'xxx.config'
    }

}

Это создает почтовый индекс с файлом проекта в корне почтового индекса. Копирует сценарии из каталога в корневой каталог, копирует файл конфигурации в корневой каталог и создает каталог в корневом каталоге zip с именем / lib и копирует все файлы jar из проекта / lib в zip / lib.

...