我有一个像这样的项目结构:
root
|__ project 1
|__ sub 1
|__ src
|__ main
|__ config
|__ build.gradle
|__ project 2
|__ build.gradle
|__ ...
我有一个rpm构建任务,遍历所有子项目,如果它们包含src/main/config
,则将其复制到rpm中的目录中,如下所示:
rootProject.subprojects {
from (it.projectDir.name + 'src/main/config' {
into 'conf'
}
}
我在from
参数中尝试了不同的变体来给出路径。绝对的,相对的,以project1/sub1/src/main/config/
为参数。他们似乎都没有工作。任何意见,将不胜感激。
答案 0 :(得分:1)
恕我直言,你在这里什么都不做:来自和来自复制任务而不是子项目的部分。
脚本中没有复制任务
尝试类似的事情(假设配置是文件):
rootProject.subprojects {
copy() {
from('sub1/src/main')
into('/tmp')
include('config')
// rename { it + ".${name}" } -> config.subproject1 ... bof
// better have project.config
rename { "${name}.config" }
}
}
如果目录(可能是这种情况)类似于:
rootProject.subprojects {
copy() {
from ('sub1/src/main/config')
into("/tmp/${name}-config")
}
}
当然将/tmp
更改为适合您的内容
nb:name是指项目名称,不确定如果深入,它在某些子任务中不会变得模棱两可。您可以在子项目块的开头添加:def projectName = name
,而不是使用projectName
答案 1 :(得分:0)
我不确定为什么会这样,但是通过更改代码:
rootProject.subprojects {
from (it.projectDir.name + 'src/main/config' {
into 'conf'
}
}
来
rootProject.subprojects {
from (new File(it.projectDir, 'src/main/conf')) {
into 'conf'
}
}
也许有经验和专业知识的人可以解释为什么会这样做