Ceci est en relation avec. Je suis en train d'ajouter dynamiquement les tâches maven-ant-pots avec de raisin, simulant ceci:Groovy + Antbuilder: Comment utiliser Grape avec taskdef?
<taskdef uri="antlib:org.apache.maven.artifact.ant"
resource="org/apache/maven/artifact/ant/antlib.xml"
classpathref="ant.classpath" />
J'ai essayé d'utiliser Grape.grab() pour rendre les tâches-maven-ant disponible pour AntBuilder comme celui-ci :
import groovy.grape.Grape
println "grab..."
Grape.grab(group:'ant', module:'ant', version:'1.7.0', classLoader:this.class.classLoader.rootLoader)
Grape.grab(group: 'org.apache.maven', module: 'maven-ant-tasks', version: '2.0.9')
println "ant taskdef..."
def ant = new AntBuilder()
ant.taskdef (resource: "org/apache/maven/artifact/ant/antlib.xml")
mais cela ne fonctionne pas parce que les modules de raisin ajoute à un autre ClassLoader de celui qui moteur ANT utilise. Alors, je pris les conseils de this AntBuilder classpath question et MADE raisin utilise le ClassLoader racine:
import groovy.grape.Grape
println "grab..."
Grape.grab(group:'ant', module:'ant', version:'1.7.0', classLoader:this.class.classLoader.rootLoader)
Grape.grab(group: 'org.apache.maven', module: 'maven-ant-tasks', version: '2.0.9', classLoader: this.class.classLoader.rootLoader)
println "ant taskdef..."
def ant = new AntBuilder()
ant.taskdef (resource: "org/apache/maven/artifact/ant/antlib.xml")
Maintenant, il jette un LinkageError:
Caught: : java.lang.LinkageError: loader constraint violation: when resolving overridden method "org.apache.tools.ant.helper.ProjectHelper2$RootHandler.setDocumentLocator(Lorg/xml/sax/Locator;)V" the class loader (instance of org/codehaus/groovy/tools/RootLoader) of the current class, org/apache/tools/ant/helper/ProjectHelper2$RootHandler, and its superclass loader (instance of <bootloader>), have different Class objects for the type org/xml/sax/Locator used in the signature
at test.mavenanttasks.run(mavenanttasks.groovy:11)
Tous les conseils sur l'obtention que cela fonctionne? Ou est-ce que le tout est une mauvaise idée?