复制树与gradle和改变结构?

Pet*_*ahn 13 copy rename build gradle

复制时可以通过gradle改变树的结构吗?

原版的

  • MOD /一个/ SRC
  • 模/ B/SRC

期望

  • DEST/MOD-A /源
  • DEST/MOD-B /源
  • DEST/MOD-C /源

我不确定在哪里创建闭包并覆盖复制树逻辑

我想做gra's相当于ant的globmapper功能

<property name="from.dir" location=".."/>      
<property name="to.dir" location="dbutil"/>
<copy>
    <fileset dir="${from.dir}" ... />
    <globmapper from="${from.dir}/*/db" to="${to.dir}"/> 
</copy>
Run Code Online (Sandbox Code Playgroud)

谢谢

彼得

Pet*_*ahn 21

更改文件名时,重命名似乎是一种好方法.更改路径时,您可以覆盖eachFile并修改目标路径.

这非常有效.

    copy {
    from("${sourceDir}") {
        include 'modules/**/**'
    }
    into(destDir)
    eachFile {details ->

        // Top Level Modules
        def targetPath = rawPathToModulesPath(details.path)
        details.path = targetPath
    }
}
....
def rawPathToModulesPath(def path) {
// Standard case modules/name/src -> module-name/src
def modified=path.replaceAll('modules/([^/]+)/.*src/(java/)?(.*)', {"module-${it[1]}/src/${it[3]}"})
return modified
}
Run Code Online (Sandbox Code Playgroud)

  • 这个适用于我,但它也创建了原始目录,它们仍然是空的. (3认同)
  • 尝试设置`setIncludeEmptyDirs(false)` (3认同)
  • 仅供参考,如果您想保留文件名并将其放入目标目录,`details.path = details.name` (3认同)