我正在如下创建Java文件的Zip,但它没有在.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内保留目录结构?
最佳答案
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'))
}
关于java - Gradle Zip:保留目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64119783/