我正在尝试使用gradle分发插件创建我的项目的几个发行版。
我成功但是有很多重复,我想知道是否有一种方法来定义闭包以覆盖不同发行版中的相似性?
这样的事情会很棒:
apply plugin: 'distribution'
def commonPart = { location ->
into('a') {
from("$projectDir/src/main/config/$location/A")
}
into('b') {
from("$projectDir/src/main/config/$location/B")
}
..
<lots more>
}
distributions {
firstPackage {
contents {
['shared', 'concrete-a'].each commonPart
}
}
secondPackage {
contents {
['shared', 'concrete-b'].each commonPart
}
}
}
但我得到了这个:
无法为参数找到方法firstPackage() [build_dt0cpe0f6o27n2ggb10318bwh $ _run_closure2 $ _closure10 @ 5e60e639] on project':test.project'。
答案 0 :(得分:1)
它将是:
apply plugin: 'distribution'
def commonPart = { location ->
return {
into('a') {
from("$projectDir/src/main/config/$location/A")
}
into('b') {
from("$projectDir/src/main/config/$location/B")
}
}
}
distributions {
firstPackage {
['shared', 'concrete-a'].collect { contents commonPart(it) }
}
secondPackage {
['shared', 'concrete-b'].collect { contents commonPart(it) }
}
}
Here你可以找到一个演示。