Maven发布:prepare-with-pom非交互式

时间:2011-12-09 17:46:42

标签: maven maven-release-plugin

我正在尝试用Maven发布一个项目。

我的项目POM包含-SNAPSHOT依赖项,因此为了自动执行发布,我想使用以下maven命令,基于“maven-release-plugin”目标:mvn release:prepare-with-pom以便准备项目的pom.xml,以便自动发布和解析依赖项-SNAPSHOT版本,而无需手动编辑它们。

不幸的是我发现这只能在命令行的交互模式下工作。我的想法是,我想知道这是否可以在没有任何手动交互的情况下完成。我使用Bamboo作为CI服务器,我希望将其纳入计划并自动执行此项目。 --non-interactive-B参数不起作用,实际上如果我使用-B--non-interactive参数,则maven目标失败。

这是mvn release:prepare-with-pom的输出:

H:\APPS\dev\cmtest\test-dependency\trunk>mvn release:prepare-with-pom -DdryRun=t
rue
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building test-dependency 0.0.4-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-release-plugin:2.0:prepare-with-pom (default-cli) @ test-depend
ency ---
[INFO] Resuming release from phase 'check-dependency-snapshots'
[INFO] Checking dependencies and plugins for snapshots ...
There are still some remaining snapshot dependencies.: Do you want to resolve th
em now? (yes/no) no: : yes
Dependency type to resolve,: specify the selection number ( 0:All 1:Project Depe
ndencies 2:Plugins 3:Reports 4:Extensions ): (0/1/2/3) 1: : 1
Resolve Project Dependency Snapshots.: '${artifactGroup}:${artifactId}' set to releas
e? (yes/no) yes: : yes
What is the next development version? (0.1.3-SNAPSHOT) 0.1.3-SNAPSHOT: :
'${artifactGroup}:${artifactId1}_1' set to release? (yes/no) yes: : yes
What is the next development version? (0.0.2-SNAPSHOT) 0.0.2-SNAPSHOT: :
'${artifactGroup}:parent-pom' set to release? (yes/no) yes: : yes
What is the next development version? (0.0.3-SNAPSHOT) 0.0.3-SNAPSHOT: :
What is the release version for "test-dependency"? (${artifactGroup}:${artifactId1}_2) 0.0.4: :
What is SCM release tag or label for "test-dependency"? (${artifactGroup}:${artifactId1}_2) test-dependency-0.0.4: :
What is the new development version for "test-dependency"? (${artifactGroup}:${artifactId1}_2) 0.0.5-SNAPSHOT: :
[INFO] Transforming '${artifactId1}_2'...
[INFO] Updating ${artifactId1}_1 to 0.0.1
[INFO] Updating ${artifactId1} to 0.1.2
[INFO] Generating release POMs...
[INFO] Generating release POM for 'test-dependency'...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

那么,为了在非交互模式下执行这个maven命令,你能帮我找一个技巧吗? 非常感谢

1 个答案:

答案 0 :(得分:1)

虽然你的pom指的是快照版本,但我认为不可能是非交互式的(可能是一个花哨的“期望”脚本,但可能有点多)。

发布依赖快照的库是非常危险的,因为库可以从你的脚下改变。任何使用你的图书馆的人都会假设他们每次使用它时都会得到相同的罐子,但是实际情况并非如此。这就是为什么maven几乎不可能做到这一点。

我建议您专注于将依赖项移动到已发布的版本,或者如果这不是一个选项,请将您的库保留为快照。将您的库保存为快照意味着您的客户至少意识到他们正在使用的库可能在他们不知情的情况下发生变化。