使用gradle在已创建的zip文件中包含其他文件

使用gradle在已创建的zip文件中包含其他文件,gradle,Gradle,我正在创建一个包含一个jar作为gradle任务输出的分发zip,如下所示: class MakeDistZipTask extends Zip { @TaskAction def DistZip(){ Properties properties = new Properties() properties.load(project.rootProject.file('gradle.properties').newDataInputStream()) def version

我正在创建一个包含一个jar作为gradle任务输出的分发zip,如下所示:

class MakeDistZipTask extends Zip {
@TaskAction
def DistZip(){
    Properties properties = new Properties()
    properties.load(project.rootProject.file('gradle.properties').newDataInputStream())
    def versionName = properties.getProperty('versionName')
    println("creating a distribution zip")
    baseName = versionName
    from ('/dist'){ include '*.jar' }
    from('src/main/libs/armeabi-v7a/') {
        include('*')
        into('armeabi-v7a')
    }

    destinationDir = file('dist/')
}
} 我执行这个任务,得到一个包含jar和armeabi-v7a文件夹的zip文件

现在,我希望在不更改此任务(必需)的情况下自定义此zip文件,以便在build.gradle项目中,用户可以根据需要向此zip添加文件。我尝试了一些可用的解决方案,但似乎没有什么效果这么好。我试过了

jar{
baseName = 'distZip'
from('src/main/jni/'){
    include('VC*.h')
    into('includes')
}
manifest {
    attributes 'Implementation-Title': 'Analytics Library', 'Implementation-Version': version
}
另一个解决方案:

sourceSets.main.resources{
from('src/main/jni/'){
    include('VC*.h')
    into('includes')
}
此外,我还使用了分发插件:

/*apply plugin: 'java-library-distribution'
 version 1.0
 distributions{
jar{
    baseName='distZip'
    contents{
        from('src/main/jni/') {
            include('VC*.h')
            into('includes')
             }
        }
    }
  }

没有解决方案将该文件添加到zip文件。任何指针都未经测试,但我会尝试以下形式:

task newZip(type: Zip)<<{
    basename newZip
    from ziptree(oldZip.zip)
    from filetree(dir/of/new/files)
}

task-newZip(type:Zip)我使用分发插件实现了这一点。我在自定义插件项目中添加了该插件,并在我的项目中添加了一组我想添加到zip文件夹中的文件,如下所示:

distributions{
          myZip{
                 from('path'){
                        include 'file'
                 }
          }
}

请你提供一个完整的最小构建文件,解释你正在执行的任务,你期望它做什么,以及它做什么?解包,修改,重新打包?我正在浏览分发插件,这不是很有用吗?我执行了这个,我执行了makeDist任务,它说newZip是最新的,这可能意味着它是最新的?您可以运行
gradle clean makeDist
I执行了gradlew clean makeDist-I,它表示跳过任务,因为它不包含任何源文件。myZip是我使用自定义插件创建的aready创建的zip