Je voulais utiliser groovy pour un petit script ftp et trouvé ce poste http://www.hhhhq.org/blog/2009/05/01/ftp-using-groovy-and-ant/ Puisqu'il y avait plusieurs dépendances je voulais utiliser Grape. Toutes les dépendances sont résolues et présentes dans le cache. Mais je ne peux pas obtenir Ant pour trouver les tâches optionnelles dans les autres bibliothèques. Il dit toujoursGroovy avec Grape et problème de chargeur de classe 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)
Version Groovy: 1.6.5 JVM: 1.6.0_15
Voici mon code source
@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()
Comme vous pouvez le voir, je soupçonne le classloader d'être le problème , il semble que Grape n'injecte pas les dépendances là. Une idée de comment je peux le faire fonctionner?
Salut Chris, j'ai essayé votre solution et je reçois cette erreur: Pris: groovy.lang.MissingMethodException: Non signature de la méthode: static groovy.lang.Grab.grab() est applicable pour les types d'arguments: (java.util.LinkedHashMap) valeurs: [[groupe: org.codenarc, module: CodeNarc, version: 0.11, classLoader: org.codehaus .groovy.tools.RootLoader @ addbf1]] Solutions possibles: grep (java.lang.Object), wait(), dump(), any(), getAt (java.lang.String), wait (long) à CodeNarcTest.run (CodeNarcTest.groovy: 3). Des idées? J'utilise groovy version 1.7.6 – Steven
Salut Steven, il semble que vous utilisiez plutôt le type d'annotation [groovy.lang.Grab] (http://groovy.codehaus.org/gapi/groovy/lang/Grab.html) de la classe [groovy.grape.Grape] (http://groovy.codehaus.org/gapi/groovy/grape/Grape.html). Pouvez-vous vérifier cela, s'il vous plaît? –
oups, corrigés. cela semblait avoir fait l'affaire. merci :-) – Steven