我想使用groovy为一个小小的ftp脚本,并发现这篇文章http://www.hhhhq.org/blog/2009/05/01/ftp-using-groovy-and-ant/ 由于有几个依赖我想用葡萄。所有依赖关系都已解析并存在于缓存中。但我无法让Ant在其他库中找到可选任务。 它总是说Groovy与葡萄和AntBuilder类加载器问题
Caught: : Problem: failed to create task or type ftp
Cause: the class org.apache.tools.ant.taskdefs.optional.net.FTP was not found.
This looks like one of Ant's optional components.
Action: Check that the appropriate optional JAR exists in
-ANT_HOME\lib
-the IDE Ant configuration dialogs
Do not panic, this is a common problem.
The commonest cause is a missing JAR.
This is not a bug; it is a configuration problem
at GrabTest.runMe(GrabTest.groovy:15)
at GrabTest.run(GrabTest.groovy:26)
Groovy的版本:1.6.5 JVM:1.6.0_15
这里是我的源代码
@Grab(group='ant', module='ant', version='[1.6.5,)')
@Grab(group='ant', module='ant-nodeps', version='[1.0,)')
@Grab(group='ant', module='ant-apache-oro', version='[1.0,)')
@Grab(group='ant', module='ant-commons-net', version='[1.0,)')
@Grab(group='apache-oro', module='jakarta-oro', version='[2.0.8,)')
@Grab(group='commons-net', module='commons-net', version='[1.4,)')
def runMe() {
// works
println getClass().getClassLoader().loadClass("org.apache.tools.ant.taskdefs.optional.net.FTP")
def ant = new AntBuilder()
println getClass().getClassLoader() //groovy.lang.GroovyClassLoader$InnerLoader
println ant.getClass().getClassLoader() //org.codehaus.groovy.tools.RootLoader
ant.ftp(server:"ftp.foo.com",
userid:"user",
password:"passwd",
passive:"yes",
verbose:"yes",
remotedir:"/pub/incoming",
binary:"yes") {
fileset(dir:".") { include(name:"**/*.gz") }
}
}
runMe()
正如你可以看到我怀疑是问题的类加载器,似乎 葡萄不会在那里注入依赖关系。 任何想法,我如何才能使其工作?
嗨克里斯,我想你的解决方案,我得到这个错误:夹缝:groovy.lang.MissingMethodException:无方法的签名:static groovy.lang.Grab.grab()适用于参数类型:(java.util.LinkedHashMap)values:[[group:org.codenarc,module:CodeNarc,version:0.11,classLoader:org.codehaus .groovy.tools.RootLoader @ addbf1]] 可能的解决方案:grep(java.lang.Object),wait(),dump(),any(),getAt(java.lang.String),wait(long) at CodeNarcTest.run(CodeNarcTest.groovy:3)。有任何想法吗?我正在使用groovy版本1.7.6 – Steven 2011-01-24 02:35:25
嗨史蒂文,看来你正在使用[groovy.lang.Grab](http://groovy.codehaus.org/gapi/groovy/lang/Grab.html)注释类型[groovy.grape.Grape](http://groovy.codehaus.org/gapi/groovy/grape/Grape.html)类。你能检查一下吗? – 2011-01-24 13:55:07
哎呀,固定。这似乎已经成功了。谢谢:-) – Steven 2011-01-24 22:23:17