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

时间:2016-02-26 05:23:20

标签: gradle

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

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文件中。任何指针

2 个答案:

答案 0 :(得分:1)

我使用分发插件工作了。我在自定义插件项目中添加了插件,在我的项目中,我添加了要添加到我的zip文件夹中的文件集,如下所示:

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

答案 1 :(得分:0)

未经测试,但我会尝试这种形式:

DistZip.finalizedBy(newZip)

您还可以执行{{1}}以确保每次运行distZip时都会调用newZip。