1

Groovy から commons-vfs sync ant タスクを使用しようとしています。ほとんどの問題は解決しましたが、まだいくつかの問題があります。これが私のグルーヴィーなスクリプトです:

@Grapes([
  @Grab(group='org.apache.commons', module='commons-vfs2', version='2.0'),
  @Grab(group='com.jcraft', module='jsch', version='0.1.53'),
  @GrabConfig(systemClassLoader = true)
])

import groovy.xml.NamespaceBuilder
import groovy.io.FileType

localRootDir = 'forUpdateSite'
updateServer = 'some.remote.server.com'
remoteRootDir = '/var/www/directory'

println("Syncing files from ${localRootDir} to ${updateServer} ${remoteRootDir}");

def ant = new AntBuilder()
def vfs = NamespaceBuilder.newInstance(ant, 'antlib:org.apache.commons.vfs2.tasks')
def remoteURI = "sftp://username:{FAKEENCRYPTEDPASSWORD}@${updateServer}${remoteRootDir}"
vfs.sync (destdir: remoteURI) {
  src() {
    file: localRootDir
  }
}

この時点で唯一欠けているのは、ローカル ディレクトリとファイルを指定する方法です。この例では、次のスタック トレースが得られます。

Syncing files from forUpdateSite to some.remote.server.com /var/www/directory

Caught: : No source file specified.
: No source file specified.
    at org.apache.commons.vfs2.tasks.AbstractSyncTask.addConfiguredSrc(AbstractSyncTask.java:149)
    at org.apache.tools.ant.IntrospectionHelper$AddNestedCreator.istore(IntrospectionHelper.java:1469)
    at org.apache.tools.ant.IntrospectionHelper$AddNestedCreator.store(IntrospectionHelper.java:1463)
    at org.apache.tools.ant.IntrospectionHelper$Creator.store(IntrospectionHelper.java:1370)
    at org.apache.tools.ant.UnknownElement.handleChild(UnknownElement.java:582)
    at org.apache.tools.ant.UnknownElement.handleChildren(UnknownElement.java:349)
    at org.apache.tools.ant.UnknownElement.configure(UnknownElement.java:201)
    at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:163)
    at syncToUpdateSite.run(syncToUpdateSite.groovy:53)
4

1 に答える 1