我正在尝试使用 Maven 发布一个库并对 sourceforge 执行站点部署(我首先创建了一个交互式 shell)。发布由 Jenkins 作业完成(使用 Jenkins 的 Maven 发布插件)。
我试过了:
-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 命令,而不是命令行上传递的值......