20

我正在使用 Maven 2.2.1 并且成功运行:

mvn -B release:clean release:prepare

但得到错误信息:

没有提供 SCM URL 来执行从

当我运行时:

mvn release:perform

pom.xmlscm标签定义正确:

<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>
4

6 回答 6

12

可以通过在根文件夹中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任务。

受到这个答案的启发。

于 2016-08-13T05:48:21.240 回答
8

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

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

于 2012-07-16T13:59:17.723 回答
6

它应该工作。我有类似的问题,但在我的情况下,由于网络错误,我不得不重新启动它:

mvn release:perform -rf :{ARTIFACT ON WHICH IT FAILED} -DconnectionUrl=scm:svn:{URL TO TAG}
于 2013-06-14T08:51:21.520 回答
1

讯息

没有提供 SCM URL 来执行从

不代表中的 SCM URL pom.xml

有两种 SCM-URLS:

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

在 pom.xml 中,您指定 trunk-folder-url。release:perform 需要的是 tag-folder-url。您可以指定参数-DconnectionUrl

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

问题是perform因为结帐/提交分别需要release.properties-DconnectionUrl

您可以:

  1. 使用-DconnectionUrl
  2. release:prepare release:perform一枪打来靠不承诺release.properties

更多信息在这里

于 2021-05-30T12:05:37.953 回答
0

我在我们的 CI 自动化中遇到了同样的异常,结果证明是因为target/checkout目录已经有一个发布版本。release:prepare对于其中一个项目,我们必须在真正的 Maven和release:perform步骤之间引入一个临时的 Maven 发布执行构建。作为即兴创作的一部分,发布标签被签出,target/checkout我注意到如果这个目录没有被删除,它会导致release:perform失败并出现No SCM URL was provided to perform the release from错误。我不知道这是否重要,但我们也使用-DlocalCheckout=true选项。

于 2019-09-25T08:33:19.540 回答
-1

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

于 2021-05-21T14:01:27.780 回答