web-dev-qa-db-fra.com

Comment obtenir une propriété de ligne de commande pour remplacer une propriété maven

J'ai un fichier pom dans lequel les numéros de version de certaines dépendances dépendent de la propriété version du projet spécifiée dans les paramètres du fichier pom. Puis-je écraser cela via la ligne de commande? Si c'est le cas, comment?

Voici la longue histoire:

Nous faisons actuellement la transition de nos projets vers maven, mais nous n'y sommes pas encore tout à fait. Il y a plusieurs modules qui ne sont toujours pas construits avec maven et sont donc des dépendances dans notre projet (ils sont intégrés dans des pots via ant). À la sortie, nous voulons que tous ces fichiers jar soient construits et contiennent le même numéro de version que le projet parent. Pour une version, deux étapes sont effectuées (jusqu'à ce que nous puissions tout obtenir avec maven)

  1. Les bocaux sont construits en fourmi avec la bonne version (12.12.4.0).
  2. Le plugin de publication maven est utilisé pour déployer le projet dans notre référentiel d'artefacts.

Dans la deuxième étape, les arguments de ligne de commande sont utilisés pour spécifier la version:

mvn release:prepare -DreleaseVersion=12.12.4.0 -DdevelopmentVersion=12.12.4.1-SNAPSHOT -Dtag=iv-12.12.4.0

Je voudrais que le fichier pom soit mis à jour avec la version spécifiée. Cependant, lorsque cette commande est exécutée, la version du fichier pom (12.12.4.0-SNAPSHOT) est toujours utilisée. Cela échoue à l'étape "vérification des dépendances et des plugins pour les instantanés" et je dois résoudre mes fichiers JAR qui ont toujours la version 12.12.4.0-SNAPSHOT utilisée à partir de la propriété de version maven.

Cela m'a conduit à la question initiale de savoir comment je peux remplacer cela afin que la version soit résolue à celle spécifiée sur la ligne de commande. Des questions supplémentaires qui pourraient me permettre de surmonter ce problème sont les suivantes: comment autoriser le plugin de publication maven à mettre à jour le fichier pom avant cette vérification? Comment ignorer la vérification de l'instantané (non souhaitable)

Je pourrais créer une propriété dans le fichier pom que je peux écraser, mais je devrais alors conserver le numéro de version à deux endroits dans le fichier pom.

Pensées?

20
Noremac

Placez les paramètres directement dans pom depuis la ligne de commande, par exemple:

mvn clean install -Dtestng.version=6.3.1

Exemple:

     <project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.test</groupId>
        <artifactId>test</artifactId>
        <version>1.0.0</version>
        <name>test</name>
        <properties>
                <testng.version>6.4</testng.version>
        </properties>

        <dependencies>
                <dependency>
                        <groupId>org.testng</groupId>
                        <artifactId>testng</artifactId>
                        <version>${testng.version}</version>
                        <scope>test</scope>
                </dependency>
        </dependencies>
</project>

Si vous l'exécutez normalement, la version testng 6.4 sera utilisée. Mais si vous l'exécutez comme: mvn clean install -Dtestng.version=6.3.1 testng version 6.3.1 sera utilisé.

Voir Définition des paramètres Maven dans Jenkins

45
Andrzej Jozwik