有没有一种方法可以;“合并”;gradle任务以避免许多dependsOn声明
假设这个gradle脚本:有没有一种方法可以;“合并”;gradle任务以避免许多dependsOn声明,gradle,Gradle,假设这个gradle脚本: task copyGroovyScript(dependsOn: prepare, type: Copy) { from "${scriptSrcLocation}/${scriptSrcName}" into buildFolderZipSource } task copyDependenciesForGroovyScript(dependsOn: copyGroovyScript, type: Copy) { from configur
task copyGroovyScript(dependsOn: prepare, type: Copy) {
from "${scriptSrcLocation}/${scriptSrcName}"
into buildFolderZipSource
}
task copyDependenciesForGroovyScript(dependsOn: copyGroovyScript, type: Copy) {
from configurations.groovyScript.resolve()
into "${buildFolderZipSource}/groovy-plugin-lib"
}
task copyTestScripts(dependsOn: copyDependenciesForGroovyScript, type: Copy ) {
from "${scriptSrcLocation}/ReadClient.groovy"
into "${buildFolderZipSource}/test"
}
task copyTestScriptsBin(dependsOn: copyTestScripts, type: Copy ) {
from "${scriptSrcLocation}/bin"
into "${buildFolderZipSource}/test/bin"
}
task copyDependenciesForTestScripts(dependsOn: copyTestScriptsBin, type: Copy) {
from configurations.testScripts.resolve()
into "${buildFolderZipSource}/test/lib"
}
task packageAll(dependsOn: copyDependenciesForTestScripts, type:Zip) {
archiveName "output-${buildTime()}.zip"
excludes ['*.zip']
destinationDir buildFolder
from buildFolder
}
我需要不同的复制
任务,然后它们才会有不同的输出文件夹
有没有办法避免所有那些
dependsOn
语句,让gradle以某种方式按照文件中声明的顺序执行事情?没有办法按照声明的方式执行。但你为什么不走这条路:
task packageAll(dependsOn: copyDependenciesForTestScripts, type:Zip) {
doFirst {
copy {
from "${scriptSrcLocation}/${scriptSrcName}"
into buildFolderZipSource
}
}
//following doFirst and so on..
archiveName "output-${buildTime()}.zip"
excludes ['*.zip']
destinationDir buildFolder
from buildFolder
}
编辑
在评论中讨论之后,结果是下面的代码应该可以完成这项工作
task prepare {
doFirst {
copy {
from "${scriptSrcLocation}/${scriptSrcName}"
into buildFolderZipSource
}
}
//following doFirst and so on..
}
task packageAll(dependsOn: prepare, type:Zip) {
archiveName "output-${buildTime()}.zip"
excludes ['*.zip']
destinationDir buildFolder
from buildFolder
}
或者,类似于
[taskA,taskB,taskC]*。每个{/*共享任务配置*/}
都可以让他做更多的自定义行为。谢谢你,看起来已经更好了。如果您可以执行:doAllFirst
,您将传递一个任务列表,以避免每次重复doFirst
。您可以配置单个doFirst
。我怀疑您是否需要这么多独立的任务。如果按照声明任务的顺序执行脚本,它将变成简单的shell脚本:/n刚刚测试过,但似乎不起作用。我得到“跳过任务”:packageAll,因为它没有源文件