Я хотел использовать groovy для небольшого ftp-скрипта и нашел этот пост http://www.hhhhq.org/blog/2009/05/01/ftp-using-groovy-and-ant/
Поскольку было несколько зависимостей, я хотел использовать Grape. Все зависимости разрешены и присутствуют в кеше. Но я не могу заставить Ant найти дополнительные задачи в других библиотеках.
Это всегда говорит
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()
Как вы видите, я подозреваю, что загрузчик классов является проблемой, кажется, что
Виноград не вводит зависимости там.
Есть идеи, как заставить его работать?