mardi 5 février 2008

Groovy et Jonas

J'ai enfin réussi à faire comprendre l'intérêt de l'intégration continue et d'un outil comme Hudson auprès de mes voisins. Mais tout n'était pas si simple :o(( car alors on m'a gentiment expliqué qu'ici on utilise JOnAS.
Et là surprise JOnAS utilise ASM 1.5.3 qui est fortement incompatible avec ASM 2.2 utilisé par Groovy et donc Hudson.
Pour que tout fonctionne bien il faut ajouter un fichier jonas-web.xml dans le répertoire WEB-INF d'Hudson avec le contenu magique suivant :

<?xml version="1.0" encoding="ISO-8859-1"?>
<jonas-web-app xmlns="http://www.objectweb.org/jonas/ns"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.objectweb.org/jonas/ns
          http://www.objectweb.org/jonas/ns/jonas-web-app_4_0.xsd">
  <java2-delegation-model>false</java2-delegation-model>
</jonas-web-app>

J'imagine que cela s'applique aussi pour Grails.

PS: voici la jolie exception que l'on récupérait

2008-02-05 09:47:36,929 : StandardContext.filterStart : Exception starting filter authentication-filter
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
        at org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:213)
        at org.codehaus.groovy.control.CompilationUnit$10.call(CompilationUnit.java:691)
        at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:885)
        at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:436)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:289)
        at groovy.lang.GroovyShell.parseClass(GroovyShell.java:488)
        at groovy.lang.GroovyShell.parse(GroovyShell.java:500)
        at groovy.lang.GroovyShell.parse(GroovyShell.java:480)
        at groovy.lang.GroovyShell.parse(GroovyShell.java:539)
        at hudson.util.spring.BeanBuilder.parse(BeanBuilder.java:133)
        at hudson.security.HudsonFilter.init(HudsonFilter.java:62)
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:223)