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')
}
}
または、おそらく 2 番目のパラメーターとして:
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)