在我的 Gradle 构建中,我想定义一个可重用的函数,用于将文件复制到远程主机。在函数里面我想使用scp
Ant 任务。下面的代码有效:
def remoteCopy(todir) {
ant.scp(
todir: todir,
passphrase: XXXXXXXX,
keyfile: XXXXXXXX) {
fileset(dir: 'config') { // I want this to be passed
include(name: '**/*.txt') // in as a parameter to the
} // function
}
}
task example {
remoteCopy('user@host:/home/xxxxxxx/')
}
但是,我不想在 remoteCopy 函数中硬编码文件集。我希望能够像这样调用函数(如果可以使用这种语法):
remoteCopy('user@host:/home/xxxxxxx/') {
ant.fileset(dir: 'config') {
include(name: '**/*.txt')
}
}
或者也许作为第二个参数:
remoteCopy('user@host:/home/xxxxxxx/',
ant.fileset(dir: 'config') { include(name: '**/*.txt') } )
了解 Groovy 和/或 Gradle 的人可以提供帮助吗?
为了完整起见,为了更容易重现,这是我scp
在 Gradle 脚本中初始化 Ant 任务的方式:
configurations { ant_jsch }
repositories { mavenCentral() }
dependencies { ant_jsch 'org.apache.ant:ant-jsch:1.8.1' }
ant.taskdef(name: 'scp',
classname: 'org.apache.tools.ant.taskdefs.optional.ssh.Scp',
classpath: configurations.ant_jsch.asPath)