2013-01-23 3 views
3

Je développe une application Web avec IntelliJ Idea 12, Maven, JRebel et Tomcat. Pour profiter de JRebel, rechargeant automatiquement les modifications au printemps haricots, je le déploiement de guerre a explosé fourni par Intellij ci-dessousDéploiement de la guerre éclatée avec IntelliJ Idea, Maven, Tomcat et JRebel

IntelliJ exploded war deployment

En raison d'un module Maven, IntelliJ exactement suivi la convention de Maven pour compiler des fichiers Java dans le dossier de sortie (cible/classes) qui est DIFFERENT à l'éclaté webapp directoy (cible/printemps-mvc-showcase/webapp/web-inf/classes). Par conséquent, Tomcat et JRebel ne peuvent pas recharger les modifications de ces nouvelles classes.

Pour le moment, j'ai temporairement configuré le dossier de sortie d'IntelliJ pointé vers le dossier WEB-INF/classes afin que les modifications puissent être rechargées. Comme je ne veux pas casser les conventions Maven, quelqu'un pourrait-il me dire une solution plus élégante?

target (Maven generated artifact directory) 
    | 
    -- classes (compiled) 
    | 
    -- spring-mvc-showcase (exploded webapp directory) 
      | 
      -- WEB-INF 
       | 
        -- classes 
+0

Résolu! JRebel a la capacité de surveiller et de recharger directement les fichiers modifiés au moment de l'exécution, même un déploiement de guerre packagé! Cliquez simplement sur "Generate rebel.xml" sur le projet et JRebel surveillera les répertoires de sortie basés sur Maven pom.xml. Incroyable! –

Répondre

1

Avez-vous installé le plug-in IntelliJ IDEA JRebel? Il ajoute une action "Générer rebel.xml". Cela générera un fichier rebel.xml, qui devrait se retrouver dans WEB-INF/classes dans le déploiement, et qui mappera les classes à l'endroit où IDEA les compile.

+0

Merci beaucoup. Je ne savais pas qu'il restait un tutoriel pour "rebel.xml". Après avoir installé JRebel plugin pour IntelliJ, je pensais que cela a fonctionné comme je l'ai vu changements parfaitement rechargés dans les configurations XML Spring. –

2

Après avoir configuré correctement, quand vous commencez Tomcat, vous devriez voir quelque chose comme ceci:

[2013-01-23 15:39:12] JRebel: Directory '/home/xxx/workspace/xxx/trunk/target/classes' will be monitored for changes. 
[2013-01-23 15:39:12] JRebel: Directory '/home/xxx/workspace/xxx/trunk/src/main/webapp' will be monitored for changes. 

Alors ce que je fais est à chaque fois que je change quelque chose, au lieu de courir paquet maven, J'effectue "Make project" (dans IDEA), le dossier/target/classes est mis à jour et la configuration rechargera automatiquement ses classes.

+0

Votre journal est très utile, il m'a aidé à comprendre que ma configuration JRebel était erronée. –

+0

J'ai eu le même problème. En fait, c'est maven qui garde la guerre éclatée sur target/spring-mvc-showcase, donc si vous pointez JRebel vers/target/spring-mvc-showcase/WEB-INF/classes, vous devrez lancer maven chaque fois que vous changerez une classe. Au lieu de cela, si vous le pointez pour regarder des cibles/classes, vous obtenez un "Make project", ce qui est plus rapide. – ag0rex

Questions connexes