我正在尝试使用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:第一个模块的部署:
[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命令…
-Dusername=puce
另请注意,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命令,而不是在命令行中传递的值。
覆写
与
<plugin> <artifactId>maven-release-plugin</artifactId> <configuration> <mavenExecutorId>forked-path</mavenExecutorId> <useReleaseProfile>false</useReleaseProfile> <arguments>-Psonatype-oss-release -Dusername=${username}</arguments> </configuration> </plugin>
在其中一位父母那里做了把戏。
命令行上的值未覆盖POM中的值似乎是一个错误。