2010-10-18 27 views
1

J'ai la mise en page de source suivante:Projet multi-webapp Maven 2 - comment créer une application Web unique?

. 
├── pom.xml 
├── modules (has pom) 
│ ├── module1 (has pom) 
│ └── module2 (has pom) 
│ └── moduleN (has pom) 
└── webapp1 (has pom) 
└── webapp2 (has pom) 

webapp1 et webapp2 dépend de tous les modules (les modules étant DAO, services, etc.). En ce moment, je construis tout depuis la racine et mvn package me donne deux fichiers WAR.

Comment construire uniquement webapp1 ou webapp2?

Si je cd dans webapp1 et exécutez mvn package il dit qu'il ne peut pas télécharger moduleX.jar (c'est avec un référentiel propre). Maven devrait certainement être capable de déduire que ces modules doivent d'abord être construits en tant que dépendances?

Répondre

1

Comment puis-je créer uniquement webapp1 ou webapp2?

Utilisez "advanced reactor options". De la racine:

mvn install -pl webapp1 -am 

Ce Maven pour installer webapp1 et les projets sur lesquels webapp1 liste depends (dans l'ordre).

L'aide (mvn -h) documente ces commandes comme ceci:

 
-pl, --projects 
     Build specified reactor projects instead of all projects 
-am, --also-make 
     If project list is specified, also build projects required by the list 

Notez que vous devez appeler install, les dépendances sont toujours résolus par le dépôt local (vous devez les install). Je me suis trompé, en appelant package fonctionne (je ne sais pas comment/pourquoi, mais il le fait).

+0

Merci! J'oublie souvent les options de la ligne de commande. – opyate

+0

Pascal, si j'efface mes paquets de mon local (rm -rf ~/.m2/repository/com/mycompany) et ensuite exécute mvn -pl webapp1 -am paquet, alors le repo reste le même, ie mes fichiers JAR ne sont pas ' t copié sur local. C'est en fait un bon effet secondaire, mais est-ce que cela contredit ce que vous avez dit de devoir "installer"? – opyate

+0

* J'efface mes paquets de mon local (...) et ensuite exécute mvn -pl webapp1 -am paquet, alors le repo reste le même * Oui, 'package' ne s'installe pas dans le dépôt local (mais pourquoi Êtes-vous "déconner" avec le dépôt local?). * C'est en fait un bon effet de bord, mais est-ce que cela contredit ce que vous avez dit de devoir "installer"? * Wow, je viens de vérifier sur un projet de compagnie et vous avez raison, appeler 'package' ne fonctionne que. Je n'étais pas au courant (et je ne comprends pas pourquoi/comment ça marche). –