web-dev-qa-db-fra.com

Maven: Comment changer le chemin du répertoire cible en ligne de commande?

Maven: Comment changer le chemin du répertoire cible en ligne de commande?

(Je veux utiliser un autre répertoire cible dans certains cas)

74
Igor Mukhin

Vous devriez utiliser des profils.

<profiles>
    <profile>
        <id>otherOutputDir</id>
        <build>
            <directory>yourDirectory</directory>
        </build>
    </profile>
</profiles>

Et commencez maven avec votre profil

mvn compile -PotherOutputDir

Si vous voulez vraiment définir votre répertoire à partir de la ligne de commande, vous pouvez faire quelque chose comme ceci (PAS recommandé du tout):

<properties>
    <buildDirectory>${project.basedir}/target</buildDirectory>
</properties>

<build>
    <directory>${buildDirectory}</directory>
</build>

Et compiler comme ceci:

mvn compile -DbuildDirectory=test

C'est parce que vous ne pouvez pas changer le répertoire cible en utilisant -Dproject.build.directory

82
Colin Hebert

Colin a raison de dire qu'un profil devrait être utilisé. Cependant, sa réponse code le répertoire cible dans le profil. Une autre solution serait d’ajouter un profil comme celui-ci:

    <profile>
        <id>alternateBuildDir</id>
        <activation>
            <property>
                <name>alt.build.dir</name>
            </property>
        </activation>
        <build>
            <directory>${alt.build.dir}</directory>
        </build>
    </profile>

Cela aurait pour effet de remplacer le répertoire de construction par ce qui est donné par la propriété alt.build.dir, ce qui peut être donné dans un POM, dans les paramètres de l'utilisateur ou sur la ligne de commande. Si la propriété n'est pas présente, la compilation aura lieu dans le répertoire cible normal.

26
Kricket

Ma solution:

  • dans pom.xml:

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <outputDirectory>${dir}</outputDirectory>
            </configuration>
        </plugin>
    
  • commande en bash:

    mvn package -Ddir="/home/myuser/"

4
Evgenii