Maven を使用してライブラリをリリースし、sourceforge へのサイト デプロイを実行しようとしています (最初にインタラクティブ シェルを作成しました)。リリースは Jenkins ジョブによって行われます (Jenkins 用の Maven Release Plugin を使用)。
私は試した:
-X -e -Dresume=false -Dusername=puce release:prepare release:perform -Darguments="-Dusername=puce"
と
-X -e -Dresume=false -Dusername=puce -Darguments=-Dusername=puce release:prepare release:perform
ただし、どちらの場合も、最初のモジュールの site:deploy でジョブがハングします。
[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
ジョブを停止すると、最後に次のように出力されます。
Password for ${username}@shell.sourceforge.net: channel stopped
これはおそらく ${username} が解決されなかったことを意味します。
${username} を解決するにはどうすればよいですか?
編集:
以下は正常に実行されることに注意してください。
site-deploy -Psonatype-oss-release -Dusername=puce
編集 2: release:perform の一部として、maven は次のコマンドを実行します。
/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
このmavenコマンドに渡されないようです...
また、help:effective-pom は次の 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>
したがって、「引数」が定義され、その値は、コマンドラインで渡された値ではなく、埋め込まれたmavenコマンドに到達するようです...