#java #gradle #build #build.gradle
#java #gradle #сборка #build.gradle
Вопрос:
Я создаю Zip-файл своих файлов Java, как показано ниже, но он не сохраняет структуру каталогов в .zip
task ('apiJavaDocSources', type: Zip) {
from fileTree('core-module/src/mypackage/').matching {
'subpackage/*Exception.java'
'subpackage/package-info.java'
'anotherpackage/*.java'
}
from fileTree('lib-module/src/mypackage/').matching {
'bundleinfo/*Dummy.java'
'bundleinfo/Random.java'
}
archiveName 'api-javadoc-sources.zip'
destinationDir(file('image'))
}
Я хочу сохранить структуру каталогов в zip как
api-javadoc-sources.zip
-- core-module
-- /src/mypackage/
-- subpackage/*.java
-- anotherpackage/*.java
-- lib-module
-- /src/mypackage/
-- bundleinfo/*.java
Но, моя реализация просто помещает все *.java
в корень .zip
, как я могу сохранить структуру каталогов здесь внутри zip?
Ответ №1:
fileTree()
Метод не сохранит иерархию каталогов, из которой вы получаете источник. Вам необходимо указать into
каталог в ваших спецификациях копирования, чтобы указать, что вы хотите, чтобы соответствующие файлы были помещены в каталог внутри zip.
Следующая задача должна выполнить то, что вы хотите:
task ('apiJavaDocSources', type: Zip) {
// search for files in this directory
from('core-module/src/mypackage') {
// indicates that all matches files should be nested in this directory inside of the zip
into 'core-module/src/mypackage'
// match file patterns
include 'subpackage/*Exception.java'
include 'subpackage/package-info.java'
include 'anotherpackage/*.java'
}
from('lib-module/src/mypackage') {
into 'lib-module/src/mypackage'
include 'bundleinfo/*Dummy.java'
include 'bundleinfo/Random.java'
}
archiveName 'api-javadoc-sources.zip'
destinationDir(file('image'))
}