2009-08-23 8 views
1

J'ai un projet Un étant construit avec un assemblage mvn: assemblage qui me donne un fichier jar avec dépendances. Ce projet obtient essentiellement un chemin de fichier et le convertit en XML.Configuration Maven pour deux projets

Maintenant, je dois créer un nouveau projet B qui enveloppera A en marchant un répertoire et d'appeler plusieurs fois à A. REMARQUE: Ils doivent être différentes applications. Je ne suis pas en mesure de modifier A en changeant ses paramètres.

je voudrais que lorsque B construit, il va d'abord construire A et obtient son fichier jar.

Quelle est la meilleure façon de configurer ceci dans un fichier pom? Devrais-je avoir deux poms? Même pom mais deux pots en construction?

Merci d'avoir lu!

+0

Je suis confus - pouvez-vous modifier A ou non? Pour pouvoir mettre en œuvre ceci dans un pom, vous devez modifier le pom de A. –

+0

Oui, c'est aussi un projet à moi. Je pourrais modifier le pom mais je ne peux pas changer comment ça s'appelle. – Macarse

Répondre

4

Je gérerais cela en ajoutant un agrégateur POM avec A et B comme modules. Ensuite, vous construisez simplement l'agrégateur à chaque fois pour avoir A construit avant B. Cela vous donne la possibilité de construire A et B individuellement ainsi que les deux ensemble.


Si vous êtes déterminé à invoquer la construction de A à partir de B, il pourrait être fait en utilisant le maven-exec-plugin d'invoquer une autre instance Maven.

Par exemple:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>exec</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <executable>mvn</executable> 
    <!--specified as a property below--> 
    <workingDirectory>${projectA.path}</workingDirectory> 
    <arguments> 
     <argument>clean</argument> 
     <argument>install</argument> 
    </arguments> 
    </configuration> 
</plugin> 

... 

<properties> 
    <projectA.path>/path/to/project/a</projectA.path> 
</properties> 
Questions connexes