2013-08-28 3 views
2

J'ai suivi l'exemple dans Building a fat jar using maven et maintenant je peux exécuter ce qui suit pour construire/tester et installer mes pots.Building Maven gros pot conditionnellement

mvn clean compile install 

Cependant, install prend maintenant beaucoup plus parce que nous sommes en train de construire un pot de graisse. Est-il possible d'avoir deux versions d'installation où l'on construit juste pots sans dépendances et l'autre fait cela et en plus builds le pot de graisse, comme:

mvn clean compile install 
mvn clean compile install-fatjar 

Je sais install-fatjar n'est pas une phase valide, mais je veux juste donner une idée de ce que j'essaie d'accomplir, c'est-à-dire une installation conditionnelle où le gros pot est construit seulement lorsqu'une option est fournie.

Répondre

4

Créez un profil pour le gros pot et configurez le plugin d'assemblage maven pour créer le gros pot dans ce profil.

Par exemple utiliser ce profil:

<profiles> 
    <profile> 
     <id>fatjar</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <configuration> 
         <archive> 
          <manifest> 
           <mainClass>fully.qualified.MainClass</mainClass> 
          </manifest> 
         </archive> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs>  
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

Ensuite, vous pouvez le construire en activant le profil

mvn -P fatjar clean install 

fatjar est l'identifiant de profil.

Plusieurs profils peuvent également être activés

mvn -P fatjar,release install 
+0

Merci beaucoup! Cela a fonctionné comme annoncé! – Delip

1

Normalement, nous ne pas utiliser la graisse-pot (ou, uber-pot) comme l'artefact principal.

Vous pouvez utiliser le plugin Assembly ou Shade pour créer une variation de l'artefact (avec un classificateur différent) qui est un uber-jar.

Il est fortement recommandé de garder votre artefact "normal" tel quel. Si vous ne voulez l'uber-jar que de temps en temps, utilisez le plugin assembly/shade pour la création de "uber-jar" dans un profil, et activez le profil quand vous le voulez. Cependant, cela devrait encore vous générer un uber-pot "supplémentaire" au lieu de faire de votre artefact principal un uber-pot.

+0

Merci, votre suggestion était correcte. Accepter la réponse de René car il a une réponse que les gens peuvent utiliser directement. – Delip

Questions connexes