Gradle копировать ресурсы, processResources

Я пытаюсь скопировать 2 папки из своей папки проекта в банку. Когда я использую следующие настройки, Gradle копирует файлы внутри папок, а не сами папки:

processResources {
    from 'public'
    from 'data'
}

Мне нужно, чтобы папка "projectDir/data" была скопирована в " my.jar / data".

2 ответов


на copy spec в Gradle копирует содержимое папки, если указанный путь в from - Это папка.

одним из решений является указание целевой папки в jar С помощью into директива.

processResources {
    from 'data'
    from 'publicFolder'
}

task data(type: Copy) {
    from 'data' into 'data'
}

task publicFolder(type: Copy) {
    from 'public' into 'public'
}

это поместит содержимое или исходные папки в папку с тем же именем в банке. Но, как вы можете видеть, Вам нужно будет повторить имена папок в into закрытие.

другой обходной путь должен иметь родительскую папку для этих папок ресурсов и использовать эту родительскую папку в copy spec.

вот один из способов структурирования папок ресурсов:

<project-folder>
|
--> res
    |
    --> public
    --> data

затем в copy спецификации processResources, вы можете сделать следующее:

processResources {
    from 'res'   
}

это создаст папки public и data в последнем файле jar, как вы хотите.


существует метод "from", который принимает закрытие с помощью CopySpec.

Я бы рекомендовал использовать это вместо того, чтобы разбивать на отдельные задачи или реструктурировать макет.

processResources {
    from('data') {into 'data'}
    from('publicFolder') {into 'publicFolder'}
}