68 votes

Maven : spécifier le outputDirectory uniquement pour l'emballage d'un jar?

Comment puis-je spécifier le répertoire de sortie uniquement pour l'emballage d'un jar?

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

84voto

lweller Points 5252

En ligne de commande

-DoutputDirectory=

et dans pom.xml

      org.apache.maven.plugins
      maven-jar-plugin
      2.3.1

        /mon/chemin

2 votes

J'ai déjà essayé ceci : mvn -DoutputDirectory=/tmp package sans succès. Comment puis-je dire à mvn que cette option devrait être utilisée par l'objectif jar:jar ?

1 votes

Sur la ligne de commande, je pense que vous ne pouvez pas le spécifier pour un seul plugin

0 votes

Merci. C'était ma première question sur stackoverflow. Je suis impressionné par le temps de réponse :-)

50voto

Sean Patrick Floyd Points 109428

Expressions de paramètres

A propos de l'utilisation en 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 qui sont conçus pour être exécutés directement depuis l'interface en ligne de commande, leurs paramètres fournissent généralement un moyen d'être configurés via des propriétés système au lieu d'une section dans le POM. La documentation du plugin pour ces paramètres listera une expression qui dénote les propriétés 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:

Configuration de ${project.build.directory}

Cependant, ${project.build.directory} n'est pas une propriété système, c'est une propriété de l'objet Projet's de l'objet Build.

Vous ne pouvez pas définir directement les propriétés internes de Maven en ligne de commande, mais vous pouvez y arriver avec un petit astuce 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). L'inconvénient : maintenant vous devez toujours utiliser le paramètre -Ddir sur la ligne de commande.

Utilisation de profils

Mais il y a aussi de l'aide ici. Il suffit d'utiliser un profil lorsque vous souhaitez configurer le répertoire:

        conf

            ${dir}

Maintenant, vous pouvez soit faire

# tout va dans someOtherDir au lieu de target
mvn clean install -Pconf -Ddir=someOtherDir

ou tout simplement

# tout va dans target
mvn clean install

Configuration du Plugin Jar

Maintenant, si vous voulez simplement modifier le répertoire de sortie du jar depuis la ligne de commande sans rediriger tout depuis target, nous allons modifier le profil pour configurer le plugin à 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:

# tout va dans someOtherDir au lieu de target
mvn clean install -Pconf -Ddir=someOtherDir

9voto

Aaron Points 181

Merci @Sean Patrick Floyd pour l'excellente explication.

Au lieu de créer un profil et d'utiliser mvn toujours avec l'option -P, j'aimerais utiliser une autre méthode qui définit une valeur par défaut de la propriété ${dir}.

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

    ${project.build.directory}

et tout comme @Sean Patrick Floyd, définissez outputDirectory.

        org.apache.maven.plugins
        maven-jar-plugin
        2.3.1

            ${dir}

Maintenant vous pouvez faire soit

# tout va dans someOtherDir au lieu de target
mvn clean install -Ddir=someOtherDir

ou bien simplement

# tout va dans target
mvn clean install

0voto

impossible Points 726

Si vous souhaitez également copier les jars de dépendance dans un dossier cible, utilisez le plugin maven-dependency.

  ...
  ...

            maven-dependency-plugin

                install

                  copy-dependencies

                  ${project.build.directory}/lib

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X