Graal 1.3.9 et le graal-mélodie: javamelody.jar non emballé lors de la construction de war avec OpenJDK 1.6


Nous maintenons une webapp développée dans Grails 1.3.9.

Pour surveiller les performances, l'application avait grails-melody 1.21 plugin installé.

Il semble que le plugin ne soit plus disponible dans les dépôts pour grails 1.3.x. Je l'ai téléchargé à partir de google-code, comme suggéré dans le documentation.

Un autre article dans stackoverflow suggère que les plugins zippés peuvent être placés dans lib puis référencés à partir de BuildConfig.groovy.

plugins {
    runtime ":hibernate:1.3.9"
    build ":tomcat:1.3.9"
    compile ":dojo:1.6.1.17"

    // Downloaded from
    // https://code.google.com/p/javamelody/downloads/list?can=1&q=grails
    // Installed from lib
    // https://stackoverflow.com/questions/15751285/whats-the-correct-way-to-install-a-grails-plugin-from-a-zip-file

    compile ":grails-melody:1.21"
}

Je l'ai fait et cette procédure a bien fonctionné lors de la construction du fichier war avec Oracle JDK 7 (sur Ubuntu 14.04). J'ai dû renommer grain-grain-mélodie-1.21.zip à graal-mélodie-1.21.zip pour qu'il ait été trouvé.

$ java -version
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

Pendant la construction, les dépendances de melody ont été chargées au début du processus de construction, lorsque le fichier grails était également des copies:

...
Downloading: /home/matejk/devel/grails/grails-1.3.9/lib/servlet-api-2.5.jar ...
Download complete.
Downloading: /home/matejk/devel/grails/grails-1.3.9/lib/jsp-api-2.1.jar ...
Download complete.
Downloading: http://repo1.maven.org/maven2/net/bull/javamelody/javamelody-core/1.44.0/javamelody-core-1.44.0.pom ...
Download complete.
Downloading: http://repo1.maven.org/maven2/net/bull/javamelody/javamelody-core/1.44.0/javamelody-core-1.44.0.pom.sha1 ...
Download complete.
Downloading: http://repo1.maven.org/maven2/org/jrobin/jrobin/1.5.9/jrobin-1.5.9.pom ...
Download complete.
Downloading: http://repo1.maven.org/maven2/org/jrobin/jrobin/1.5.9/jrobin-1.5.9.pom.sha1 ...
Download complete.
Downloading: http://repo1.maven.org/maven2/com/lowagie/itext/2.1.7/itext-2.1.7.pom ...
Download complete.
Downloading: http://repo1.maven.org/maven2/com/lowagie/itext/2.1.7/itext-2.1.7.pom.sha1 ...
Download complete.
Downloading: /home/matejk/devel/grails/grails-1.3.9/lib/groovy-all-1.7.8.jar ...
Download complete.
Downloading: /home/matejk/devel/grails/grails-1.3.9/lib/commons-beanutils-1.8.0.jar ...
Download complete.
...
Downloading: http://repo1.maven.org/maven2/net/bull/javamelody/javamelody-core/1.44.0/javamelody-core-1.44.0.jar ...
Download complete.
Downloading: http://repo1.maven.org/maven2/net/bull/javamelody/javamelody-core/1.44.0/javamelody-core-1.44.0.jar.sha1 ...
Download complete.
Downloading: http://repo1.maven.org/maven2/com/lowagie/itext/2.1.7/itext-2.1.7.jar ...
Download complete.
Downloading: http://repo1.maven.org/maven2/com/lowagie/itext/2.1.7/itext-2.1.7.jar.sha1 ...
Download complete.
Downloading: http://repo1.maven.org/maven2/org/jrobin/jrobin/1.5.9/jrobin-1.5.9.jar ...
Download complete.
Downloading: http://repo1.maven.org/maven2/org/jrobin/jrobin/1.5.9/jrobin-1.5.9.jar.sha1 ...
Download complete.
Downloading: /home/matejk/devel/grails/grails-1.3.9/lib/aspectjweaver-1.6.8.jar ...
...

Le fichier war résultant avait des fichiers jar javamelody, jrobin et itext dans WEB-INF / lib.

Cependant, le l'exigence est de construire l'application avec JDK 1.6 sur une autre machine (Jenkins) où la vérification propre des sources est effectuée pour chaque construction.

java -version
java version "1.6.0_31"
OpenJDK Runtime Environment (IcedTea6 1.13.3) (6b31-1.13.3-1ubuntu1)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

Le téléchargement de jars s'est produit plus tard dans le processus de construction:

Executing hibernate-1.3.9 plugin post-install script ...
Plugin hibernate-1.3.9 installed
Installing zip /var/lib/jenkins/.ivy2/cache/org.grails.plugins/grails-melody/zips/grails-melody-1.21.0.zip... ...
    [mkdir] Created dir: /var/lib/jenkins/workspace/etermin-2.4/target/projects/etermin-2.4/plugins/grails-melody-1.21
    [unzip] Expanding: /var/lib/jenkins/.ivy2/cache/org.grails.plugins/grails-melody/zips/grails-melody-1.21.0.zip into /var/lib/jenkins/workspace/etermin-2.4/target/projects/etermin-2.4/plugins/grails-melody-1.21
Installed plugin grails-melody-1.21 to location /var/lib/jenkins/workspace/etermin-2.4/target/projects/etermin-2.4/plugins/grails-melody-1.21. ...
Resolving plugin JAR dependencies ...
Downloading: http://repo1.maven.org/maven2/net/bull/javamelody/javamelody-core/1.44.0/javamelody-core-1.44.0.pom ...
Download complete.
Downloading: http://repo1.maven.org/maven2/net/bull/javamelody/javamelody-core/1.44.0/javamelody-core-1.44.0.pom.sha1 ...
Download complete.
Downloading: http://repo1.maven.org/maven2/org/jrobin/jrobin/1.5.9/jrobin-1.5.9.pom ...
Download complete.
Downloading: http://repo1.maven.org/maven2/org/jrobin/jrobin/1.5.9/jrobin-1.5.9.pom.sha1 ...
Download complete.
Downloading: http://repo1.maven.org/maven2/com/lowagie/itext/2.1.7/itext-2.1.7.pom ...
Download complete.
Downloading: http://repo1.maven.org/maven2/com/lowagie/itext/2.1.7/itext-2.1.7.pom.sha1 ...
Download complete.
Downloading: http://repo1.maven.org/maven2/net/bull/javamelody/javamelody-core/1.44.0/javamelody-core-1.44.0.jar ...
Download complete.
Downloading: http://repo1.maven.org/maven2/net/bull/javamelody/javamelody-core/1.44.0/javamelody-core-1.44.0.jar.sha1 ...
Download complete.
Downloading: http://repo1.maven.org/maven2/com/lowagie/itext/2.1.7/itext-2.1.7.jar ...
Download complete.
Downloading: http://repo1.maven.org/maven2/com/lowagie/itext/2.1.7/itext-2.1.7.jar.sha1 ...
Download complete.
Downloading: http://repo1.maven.org/maven2/org/jrobin/jrobin/1.5.9/jrobin-1.5.9.jar ...
Download complete.
Downloading: http://repo1.maven.org/maven2/org/jrobin/jrobin/1.5.9/jrobin-1.5.9.jar.sha1 ...
Download complete.

Cependant, lors de la création d'une guerre avec ce JDK, les jars javamelody, jrobin et itext ne sont pas emballés.

Par conséquent, le déploiement et le démarrage de webapp échouent.

SEVERE: Error configuring application listener of class net.bull.javamelody.SessionListener
java.lang.ClassNotFoundException: net.bull.javamelody.SessionListener
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4153)
  • La procédure d'installation du plugin à partir du répertoire local est-elle correcte?
  • Des idées pour résoudre ce problème pour faire des pots à emballer dans la guerre?

Merci,

Matej

EDIT: Après avoir supprimé les fichiers grails dans ~/.grails/1.3.9 / le comportement avec JDK 6 et JDK 7 est le même:

Les fichiers Jar ne sont pas empaquetés et le déploiement échoue.

Author: Community, 2014-07-18

3 answers

J'ai eu le même problème pour l'intégration d'un autre plugin avec Graal 1.3.7

Je sais que ce que je dis n'est pas une meilleure pratique, mais j'ai fait cette solution de contournement.

Mettre le .zip du plugin dans un dossier que vous voulez dans votre projet, et commit dans votre dépôt svn.

Après dans votre environnement local, vous pouvez utiliser le script grails installPlugin spécifiant le plugin que vous souhaitez installer.

Lorsque vous devez créer une application sur une autre machine, vous pouvez également mettre un script dans votre projet qu'un utilisateur peut appeler. Ce script contiendra d'abord grails installPlugin et après, la commande grails war.

Une autre façon de le faire est, si vous avez extrait tout le code souce du plugin par exemple dans un dossier appelé myPlugin (nommé my-plugin) et que votre projet se trouve dans le dossier myProgect et que chaque dossier se trouve dans le même répertoire, vous pouvez ajouter une ligne de code dans votre BuildConfig.groovy:

grails.plugin.location.'my-plugin' = "../myPlugin"

Évidemment si le dossier du plugin n'est pas dans le même chemin que vous peut mettre le bon chemin:

grails.plugin.location.'my-plugin' = "../path/to/plugin/myPlugin"

De cette façon, vous n'avez pas besoin d'appeler la méthode install plugin, grails sait que les dépendances et empaquettent le plugin.

J'espère que je vous aide, en ce qui concerne meilleur.

 0
Author: Giuseppe Iacobucci, 2014-07-25 20:42:29

Vous pouvez configurer un gestionnaire de référentiel local tel que Artifactory et faire télécharger les plugins Grails à partir de ce référentiel.
Vous pouvez créer un local Référentiel Artifactory pour les plugins Grails, non disponible dans le référentiel de plugins Grails, et déployer la version 1.21 du plugin JavaMelody Grails.
Ensuite, vous devez ajouter ce référentiel local à la liste des référentiels à partir desquels Grails résout (BuildConfig.Groovy):

groovy grails.project.dependency.resolution = { 
    ... 
    repositories { 
      grailsPlugins() 
      grailsHome() 
      mavenRepo "http://localhost:8081/artifactory/grails-plugins-local/"
      grailsCentral() 
   } 

   plugins { 
      build ":grails-melody:1.21" 
   }
   ...
}

Jetez un oeil à Gestion plugins avec Grails 1.3 dans le spring.io blog pour plus d'informations sur ce type de solution.

 0
Author: Dror Bereznitsky, 2014-07-27 19:24:55

La façon dont j'ai réussi à résoudre ce problème était d'inclure explicitement les DEP de melody à BuildConfig.groovy (copie des dépendances du plugin):

dependencies {
        // Deps for grails-melody (copied from plugin deps) that are *not* included automatically with plugin.

        compile "net.bull.javamelody:javamelody-core:1.44.0"
        compile ("com.lowagie:itext:2.1.7") {
            excludes "bcmail-jdk14", "bcprov-jdk14", "bctsp-jdk14"
        }
        compile "org.jrobin:jrobin:1.5.9"
    }
    plugins {
        compile ":grails-melody:1.21"
    }

J'ai vu quelques bugs ouverts dans Grails JIRA qui pourraient être liés à ce que je vivais et qui ont été résolus dans 2.x

Https://jira.grails.org/browse/GRAILS-7608

 0
Author: matejk, 2014-07-29 07:08:25