gradle'from'不移动文件

时间:2016-08-03 21:59:40

标签: gradle groovy

我有一个像这样的项目结构:

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/为参数。他们似乎都没有工作。任何意见,将不胜感激。

2 个答案:

答案 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' } } 也许有经验和专业知识的人可以解释为什么会这样做