【问题标题】:Gradle Zip: retain the directory structuresGradle Zip:保留目录结构
【发布时间】:2021-01-15 01:48:21
【问题描述】:

我正在创建我的 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 中?

【问题讨论】:

    标签: java gradle build build.gradle


    【解决方案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'))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      相关资源
      最近更新 更多