使用gradle在已创建的zip文件中包含其他文件
我正在创建一个包含一个jar作为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
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