我想使用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