web-dev-qa-db-fra.com

Passer des arguments à la version release de Maven

J'essaie de libérer une bibliothèque à l'aide de Maven et d'effectuer un déploiement de site vers sourceforge (j'ai d'abord créé un shell interactif). La publication est effectuée par un travail Jenkins (à l’aide du plug-in Maven Release pour Jenkins).

J'ai essayé:

-X -e -Dresume=false -Dusername=puce release:prepare release:perform -Darguments="-Dusername=puce"

et

-X -e -Dresume=false -Dusername=puce -Darguments=-Dusername=puce release:prepare release:perform

mais à chaque fois le travail se bloque sur le site: déploiement du premier module:

 [INFO] --- maven-site-plugin:3.2:deploy (default-deploy) @ myproject-parent ---
 [INFO] Parent project loaded from repository: myGroupId:myOtherproject-parent:pom:1.0
 [INFO] Parent project loaded from repository: myGroupId:myOtherproject-parent:pom:1.0
 Using private key: /opt/jenkins/.ssh/id_dsa

Lorsque j'arrête le travail, les éléments suivants sont imprimés à la fin:

Password for ${username}@Shell.sourceforge.net: channel stopped

ce qui signifie probablement que $ {nom d'utilisateur} n'a pas été résolu.

Comment puis-je résoudre le $ {username}?

Modifier:

Notez que les opérations suivantes fonctionnent bien:

site-deploy -Psonatype-oss-release -Dusername=puce

Edit 2: Dans le cadre de la release: perform maven exécute la commande suivante:

/usr/share/maven/bin/mvn -s /tmp/release-settings7797889802430474959.xml deploy site-deploy --no-plugin-updates --batch-mode -Psonatype-oss-release -P nexus -f pom.xml

-Dusername=puce ne semble pas être passé à cette commande maven ...

Notez également que help: effective-pom affiche la configuration suivante du plug-in maven-release-plugin:

<plugin>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.2</version>
  <configuration>
    <mavenExecutorId>forked-path</mavenExecutorId>
    <useReleaseProfile>false</useReleaseProfile>
    <arguments>-Psonatype-oss-release</arguments>
  </configuration>
</plugin>

Donc, 'arguments' est défini et sa valeur semble atteindre la commande intégrée maven au lieu de la valeur transmise sur la ligne de commande ...

12
Puce

Primordial

<plugin>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.2</version>
  <configuration>
    <mavenExecutorId>forked-path</mavenExecutorId>
    <useReleaseProfile>false</useReleaseProfile>
    <arguments>-Psonatype-oss-release</arguments>
  </configuration>
</plugin>

avec

    <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
            <mavenExecutorId>forked-path</mavenExecutorId>
            <useReleaseProfile>false</useReleaseProfile>
            <arguments>-Psonatype-oss-release -Dusername=${username}</arguments>
        </configuration>
    </plugin>

dans l'un des parents a fait le tour.

Il semble que la valeur sur la ligne de commande ne remplace pas la valeur dans le POM.

7
Puce

Ce que j'ai réussi à faire par le passé est le suivant:

  • Définissez une propriété dans le fichier POM, par exemple:

    <properties>
        <release.arguments></release.arguments>
    </properties>
    
  • Ajoutez la propriété POM à la configuration du plug-in dans le fichier POM, par exemple;

    <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
            <arguments>${release.arguments}</arguments>
           ...
    
  • Passez l'argument à travers la propriété sur la ligne de commande, par exemple:

    mvn release:prepare -Drelease.arguments="-N -Prelease"
    

J'espère que cela t'aides.

18
Sander Verhagen

Ma solution était similaire à Sander Verhagen's. J'ai ajouté seulement la ligne seulement si.

Comment je cours:

mvn --batch-mode release:prepare -Denvironment=production

Ma config:

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                <tag>${artifactId}-${version}-${environment}</tag>
                <arguments>-Denvironment=${environment}</arguments>
              <releaseProfiles>release</releaseProfiles>
            </configuration>
        </plugin>
    </plugins>
</build>

La différence est que maintenant mes sous-modules utilisent la variable environment et je n'ai pas besoin de la définir deux fois (I.e. -Darguments=-Denvironment=production -Denvironment=production). Je me donne également la flexibilité de ne pas ajouter la balise properties.

0
Bevilaqua