【问题标题】:maven deploy jar to svn with a commit messagemaven 使用提交消息将 jar 部署到 svn
【发布时间】:2013-01-24 09:04:45
【问题描述】:

我们使用在 SVN 中管理的 maven 存储库。我构建了一个 jar newUtil-1.0.jar,我需要将它部署到远程仓库。我正在使用以下命令,导致构建失败。

mvn deploy:deploy-file -Dfile=/tmp/newUtil-1.0.jar -DgroupId=com.tareque.utils -DartifactId=newUtil -Dversion=1.0 -Dpackaging=jar -DrepositoryId=myrepo -Durl=https://<my-repo-url>

在服务器端检查 svn 的日志会显示此消息

[2013 年 1 月 18 日星期五 11:35:47] [错误] [客户端 169.124.140.200] 提交被预提交挂钩(退出代码 1)阻止,输出:\n不允许空 cmets。

似乎阻止了带有空消息/cmets 的提交。

那么,如何将提交消息的注释传递给上述maven deploy 命令?

【问题讨论】:

  • 为什么不使用真正的存储库管理器而不是 SVN。 SVN 作为存储库相对于 Repo 管理器的优势是什么?
  • @khmarbaise 我是团队的新开发人员。这已经使用了多年。因此,改变这一点是另一项艰巨的任务。希望你明白,这是真正的开发者世界,而不是开发者获得完全访问权限的理想世界;)
  • 部署 jar 的常用方法是使用 maven-release-plugin,它将在 SVN 等中标记,当然会将工件部署到适当的存储库。但是您可以尝试使用 -Dmessage="WhatEver",但我不确定这是否有效。

标签: svn maven maven-deploy-plugin


【解决方案1】:

不要使用部署,使用maven-release-plugin。在这种情况下设置提交消息很简单:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-release-plugin</artifactId>
      <configuration>
        <scmCommentPrefix>re #123:</scmCommentPrefix>
      </configuration>
    </plugin>  ......

首先,您必须搜索一下使用发布插件所需的任何其他设置(首先是&lt;scm&gt;&lt;distributionManagement&gt; 标签),但是一旦您有mvn release:prepare release:perform 工作,这个额外的配置设置可以让你修改提交信息。

相信我,一旦你正确使用了发布插件,你就不会想要回到手动发布版本。

ETA:如果您实际上是在尝试将 快照 部署到 SVN(这似乎有点疯狂,我从未见过这样做过,但应该有可能)您会想要调查using wagon-scm 这样您的 &lt;distributionManagement&gt; 部分将使用 scm:svn:https://your-repo-url。如果你得到它的工作,请告诉我们!

【讨论】:

  • 不过,这会在每次提交时打上标签。
  • 嗯,重点是您正在发布,因此是插件的名称,您当然应该标记每个发布。如果 OP 不是“删除版本”,他们应该使用 SNAPSHOT 版本 ID,答案会改变。
  • 是的,你确实是对的。我相信 mtk 不知道 SNAPSHOT-s 和固定版本如何在 Maven 中工作。
猜你喜欢
  • 2014-09-20
  • 2018-06-28
  • 1970-01-01
  • 2011-12-25
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 2010-11-25
相关资源
最近更新 更多