svn commit后自动执行插件

时间:2014-07-15 10:04:54

标签: maven svn maven-3 maven-plugin mojo

是否可以在从svn提交之后或之前执行maven插件(由我创建(为了好玩))?

也许这样的事情有合适的maven生命周期?

感谢您的帮助!

修改 可以预先提交钩子执行maven插件吗?

2 个答案:

答案 0 :(得分:0)

记住关于Subversion钩子的一个简单事实:

  

Subversion挂钩在Subversion服务器上运行,而不在本地系统上运行,无法访问用户的本地工作目录,也无法以任何方式操作该工作目录。

所以,你有一个pre-commit hook在预提交时运行一些maven插件,因为它无法访问你所做的更改。

现在,这个Maven插件在做什么?它运行单元测试吗?重新格式化代码?输出一些pithy quotation?为什么必须在提交之前运行它?

您可以使用持续集成工具(我强烈建议您使用它)在每次提交后运行Maven插件,然后在出现任何问题时通过电子邮件发送负责该项目的小组。是的,这将在提交后发生,但这是版本控制:提交可以撤消。

答案 1 :(得分:0)

如上所述,持续集成工具是任何规模较大的工作或团队项目的方法。

然而,有些原因可能会导致您将持续集成工具视为过度杀伤(尤其是因为它为不断增长的学习内容添加了另一种工具,并且您不会觉得您有足够的时间来做这件事现在)

因此,当然可以从您的svn服务器触发构建。请记住,这些将针对服务器运行的任何体系结构进行编译。如果你只是编译java那么你就没事了。

您需要使用提交后挂钩,因为预提交挂钩存在许多问题:

  • 提交给SVN的用户每次提交时都必须等待挂钩完成。
  • 构建失败可能导致提交失败(这是你想要的吗?)。
  • 来自提交的内容在提交之前是不稳定的(在预提交挂钩上,您还没有提供稳定的版本号。其他人可能会在之后启动提交首先提交,特别是如果你的构建需要一段时间才能完成)。
  • 确定提交后的文件的确切状态并不容易(见上文)。

因此,如果你使用post-commit钩子,事情会容易得多。

查看svnlook。此命令可用于查询提交中的更改:提交后挂钩中的svnlook changed ${1} -r ${2} > myTest.log将为您打印一个文件更改列表。您可以轻松搜索此内容以查看上次提交中是否触及了目录,然后使用svn checkoutmvn deploy来构建该项目。