我正在使用maven 2.2.1而且我成功地跑了:
mvn -B release:clean release:prepare
但是,当我运行时,会收到错误消息“没有提供SCM URL来执行”的发布:
mvn release:perform
我的pom.xml正确定义了scm标记:
<scm>
<url>file:///C:/tmp/svnrepo/myproj/trunk</url>
<connection>scm:svn:file:///C:/tmp/svnrepo/myproj/trunk</connection>
<developerConnection>scm:svn:file:///C:/tmp/svnrepo/myproj/trunk</developerConnection>
</scm>
答案 0 :(得分:7)
看起来我做了mvn -DdryRun=true release:perform
,这已经从准备阶段删除了release.properties文件。
所以我将-DconnectionUrl添加到命令中以提供标记的URL
答案 1 :(得分:6)
可以通过在根文件夹中创建手动编辑的release:perform
文件来重新运行maven release.properties
。此文件应定义以下两个属性:scm.url
和scm.tag
。这是一个可能的例子:
scm.url=scm:git:https://github.com/owner/repo.git
scm.tag=v1.0.4
使用此文件可以重做release:perform
任务。
受此answer启发。
答案 2 :(得分:4)
它应该工作。我有类似的问题,但在我的情况下,由于网络错误导致执行失败,我不得不重新启动它,如:
mvn release:perform -rf :{ARTIFACT ON WHICH IT FAILED} -DconnectionUrl=scm:svn:{URL TO TAG}
答案 3 :(得分:0)
我在CI自动化中也遇到了同样的异常,事实证明是由于target/checkout
目录已经具有发行版。对于其中一个项目,我们必须在真实的Maven release:prepare
和release:perform
步骤之间引入临时的Maven版本perform build。作为即兴创作的一部分,发布标签已签出到target/checkout
,而我注意到的是,如果不删除此目录,将导致release:perform
失败,并出现No SCM URL was provided to perform the release from
错误。我不知道这是否重要,但是我们也使用了-DlocalCheckout=true
选项。
答案 4 :(得分:0)
消息
<块引用>没有提供 SCM URL 来执行从
不代表 pom.xml
中的 SCM URL!
SCM-URL 有两种:
在 pom.xml 中指定主干文件夹 URL。 release:perform 需要的是 tag-folder-url。您可以指定参数 -DconnectionUrl。
通常您在一次 Maven 调用中使用 prepare
和 perform
。 Prepare 做所有准备工作,并将使用注释 [maven-release-plugin] prepare release XXX
- 但并非所有文件都提交将一些资源提交给版本控制系统!一个重要的文件未提交给版本控制系统 release.properties
。如果省略 -DconnectionUrl,则使用此文件。
问题在 perform
时出现,因为结帐/提交分别需要 release.properties
或 -DconnectionUrl。
您可以:
release:prepare release:perform
来依赖未提交的release.properties
更多信息are here
答案 5 :(得分:-1)
只需先运行 mvn release:clean release:prepare
,然后 mvn release:perform
为我工作。