Gradle分发任务输出文件不在ZIP的根目录下
我创建了一个简单的Gradle构建,它将./src/main/groovy的内容导出到一个zip文件。zip文件包含一个与zip文件名称完全相同的文件夹。我不知道如何使用分发插件将文件放入zip文件的根目录中 i、 e.Gradle分发任务输出文件不在ZIP的根目录下,gradle,software-distribution,Gradle,Software Distribution,我创建了一个简单的Gradle构建,它将./src/main/groovy的内容导出到一个zip文件。zip文件包含一个与zip文件名称完全相同的文件夹。我不知道如何使用分发插件将文件放入zip文件的根目录中 i、 e.gradlew clean distZip生产: helloDistribution-1.0.zip->helloDistribution-1.0->文件 我想要的是: helloDistribution-1.0.zip->files 我的build.gradle文件: appl
gradlew clean distZip
生产:
helloDistribution-1.0.zip->helloDistribution-1.0->文件
我想要的是:
helloDistribution-1.0.zip->files
我的build.gradle文件:
apply plugin: 'groovy'
apply plugin: 'distribution'
version = '1.0'
distributions {
main {
contents {
from {
'src/main/groovy'
}
}
}
}
我试图通过将
添加到{'dir'}
中来解决此问题,但没有效果。使用添加到{'dir'
似乎可以解决此问题:
contents {
from {
'src/main/groovy'
}
into '/'
}
不幸的是,彭福德的回答对我不起作用。以下是我提出的解决方案:
task Package(type: Zip) {
from {
def rootScriptFiles = [] // collection of script files at the root of the src folder
new File('src/main/groovy/').eachFile { if (it.name.endsWith('.groovy')) rootScriptFiles.add(it) }
['build/libs/', // build binaries
'src/res/', // resources
rootScriptFiles, // groovy root source files
]
}
baseName = pluginName
}
这样不行。我认为创建这种层次结构的唯一方法是使用普通的ant-zip任务。如果您仅仅更改build.gradle并调用
gradle-distZip
,您将看不到想要的效果。您必须调用gradle clean distZip