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 ...
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.
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.
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.