Maven: spécifiez le répertoire de sortie uniquement pour empaqueter un jar?

Comment puis-je spécifier le répertoire de sortie uniquement pour empaqueter un fichier jar?

http://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html Cela montre tous les parameters, mais comment puis-je les définir dans la ligne de commande ou pom.xml?

sur la ligne de commande

-DoutputDirectory= 

et dans pom.xml

    org.apache.maven.plugins maven-jar-plugin 2.3.1  /my/path     

Expressions de parameters

À propos de l’utilisation de la ligne de commande:

La documentation du paramètre spécifie que le paramètre est initialisé à la valeur de la propriété ${project.build.directory} (qui est la propriété faisant référence au dossier cible)

Voici ce que cela signifie:

Pour les mojos destinés à être exécutés directement à partir de l’interface de ligne de commande, leurs parameters fournissent généralement un moyen d’être configurés via les propriétés système au lieu d’une section dans le POM. La documentation du plugin pour ces parameters listera une expression qui indique les propriétés du système pour la configuration. Dans le mojo ci-dessus, le paramètre url est associé à l’expression ${query.url} , ce qui signifie que sa valeur peut être spécifiée par la propriété système query.url comme indiqué ci-dessous:

 mvn myquery:query -Dquery.url=http://maven.apache.org 

Référence:

  • Guide de configuration des plug-ins> Configuration générique

Configurer $ {project.build.directory}

Cependant, ${project.build.directory} n’est pas une propriété système, c’est une propriété de l’object Build du projet .

Vous ne pouvez pas définir les propriétés internes de maven directement sur la ligne de commande, mais vous pouvez y arriver avec un petit tour en ajoutant des espaces réservés dans votre pom.xml:

  ${dir}  

Maintenant, le répertoire de sortie est défini via la propriété de la ligne de commande (en utilisant -Ddir=somedirectory ). Inconvénient: vous devez maintenant utiliser le paramètre -Ddir sur la ligne de commande.

Utiliser des profils

Mais il y a aussi de l’aide ici. Utilisez simplement un profil lorsque vous souhaitez configurer le répertoire:

   conf  ${dir}    

Maintenant vous pouvez soit faire

 # everything goes in someOtherDir instead of target mvn clean install -Pconf -Ddir=someOtherDir 

ou plaine vieux

 # everything goes in target mvn clean install 

Configuration du plugin Jar

Maintenant, si vous souhaitez simplement modifier le jar outputDirectory à partir de la ligne de commande sans redirect tout depuis la cible, nous modifierons le profil pour configurer le plug-in à partir d’une propriété de ligne de commande:

   conf    org.apache.maven.plugins maven-jar-plugin 2.3.1  ${dir}       

L’utilisation est identique à ci-dessus:

 # everything goes in someOtherDir instead of target mvn clean install -Pconf -Ddir=someOtherDir 

Merci @Sean Pasortingck Floyd pour l’excellente explication.

Au lieu de créer un profil et d’utiliser mvn toujours par l’option -P, je voudrais utiliser une méthode différente qui crée une valeur par défaut pour la propriété $ {dir}.

Définissez simplement la valeur par défaut de $ {dir} comme $ {project.build.directory}

  ${project.build.directory}  

et identique à @Sean Pasortingck Floyd, définissez outputDirectory.

   org.apache.maven.plugins maven-jar-plugin 2.3.1  ${dir}    

Maintenant vous pouvez soit faire

 # everything goes in someOtherDir instead of target mvn clean install -Ddir=someOtherDir 

ou plaine vieux

 # everything goes in target mvn clean install