我正在尝试将近2天来使用maven和hudson运行发布插件。我现在安装了一个svn客户端(不知道为什么我需要这个,因为Hudson有一个SVN插件)并且该插件能够运行“mvn”命令。现在重新启动hudson和作业后,我收到以下错误:
org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目框架上执行目标org.apache.maven.plugins:maven-release-plugin:2.0:prepare(default-cli):无法检查本地修改 提供者留言: svn命令失败。 命令输出: svn:E155036:请参阅'svn upgrade'命令 svn:E155036:工作副本'C:.hudson \ jobs \ Project 1 \ workspace'太旧了(格式8,由Subversion 1.4创建)
我在这里做错了什么?看起来我正在使用这个插件严重错误,因为我从一个错误踩到另一个错误。
感谢您的帮助!
答案 0 :(得分:2)
SVN中的工作副本基于您使用的svn客户端的版本。随着时间的推移,这些可能是不兼容的(这是好的,因为它们总是给你一个易于升级的系统,通常这会自动发生),但从sVN v 1.4到最新版本(1.7)不会给你通常的自动升级可爱。事实上,使用svn 1.4完成原始结账可能是个坏主意,因为这很古老。
所以,你需要找出原始结账的内容。如果它是插件,那么转储它。我不认为当前版本的Hudson有这么老的svn客户端,即使他们还没有升级到1.7,它至少会在1.6.x上。
检查maven插件,看看它有多久,以及svn插件(以及你的hudson安装)。
答案 1 :(得分:2)
刚刚在Jenkins处理了Maven的发布,我感到很痛苦。
其他人已经回答了您的问题:您需要确保使用相同工作副本的所有SVN客户端都是相同的版本。
但是要回答你为什么需要命令行SVN客户端的元问题,那是因为maven-release-plugin
不只是从SVN中提取数据,它实际上必须提交和标记修订版,Hudson没有提供相应的机制。另外,maven-release-plugin
不能依赖于Hudson提供的东西,因为Maven被用在Hudson不可用的许多其他环境中(例如,来自命令行)。
如果您的问题实际上是maven-release-plugin
无法使用纯Java SVN客户端而不是依赖命令行客户端的原因,那么答案就是因为许可问题(the SVNKit library can't be distributed under the ASF license )。但是,您可以使用名为maven-scm-provider-svnjava
的实现。我自己没试过,所以YMMV。
答案 2 :(得分:0)
您在本地运行的Subversion for Windows客户端的版本可能是您的TortoiseSVN的更高版本...搜索Sourceforge“Subversion for Windows”以查找旧版本。