org.apache.maven.BuildFailureException:未提供任何SCM URL来执行发布

时间:2012-07-16 13:42:56

标签: maven maven-release-plugin

我正在使用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>

6 个答案:

答案 0 :(得分:7)

看起来我做了mvn -DdryRun=true release:perform,这已经从准备阶段删除了release.properties文件。

所以我将-DconnectionUrl添加到命令中以提供标记的URL

答案 1 :(得分:6)

可以通过在根文件夹中创建手动编辑的release:perform文件来重新运行maven release.properties。此文件应定义以下两个属性:scm.urlscm.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:preparerelease: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 有两种:

  1. 主干文件夹(用于开发)
  2. 标签文件夹(用于标记发布)

在 pom.xml 中指定主干文件夹 URL。 release:perform 需要的是 tag-folder-url。您可以指定参数 -DconnectionUrl

通常您在一次 Maven 调用中使用 prepareperform。 Prepare 做所有准备工作,并将使用注释 [maven-release-plugin] prepare release XXX- 但并非所有文件都提交将一些资源提交给版本控制系统!一个重要的文件提交给版本控制系统 release.properties。如果省略 -DconnectionUrl,则使用此文件。

问题在 perform 时出现,因为结帐/提交分别需要 release.properties-DconnectionUrl

您可以:

  1. 使用 -DconnectionUrl
  2. 指定标签网址
  3. 一次性调用release:prepare release:perform来依赖未提交的release.properties

更多信息are here

答案 5 :(得分:-1)

只需先运行 mvn release:clean release:prepare,然后 mvn release:perform 为我工作。