命令行构建的最佳实践

时间:2010-07-06 04:19:51

标签: eclipse maven-2 command-line build

Joel Test的第2项是“你可以一步完成构建”,但实现这一目标的最佳(或普遍接受的)方法是什么?使用IDE的命令行界面执行headless build的优点和缺点是什么,而不是维护完全独立于IDE的构建脚本(例如,在Java项目中使用Ant或Maven) )。

我问这个问题是因为我正在试验Maven,并且有点惊讶地发现,即使使用m2eclipse插件,关闭Eclipse的Java Builder并将整个构建过程委托给Maven也不是真的可行项目。似乎如果我想将项目迁移到Maven,我最终将不得不维护两个相同但不同的构建过程,例如命令行构建将使用DataNucleus Maven插件来增强JDO类,而IDE构建将使用Eclipse的DataNuclues插件;命令行构建将使用Tomcat Maven插件,而IDE将使用Eclipse的Web工具平台。这种冗余似乎很不幸。

我认为NetBeans使用Ant进行构建,这听起来像是可以解决这个问题。但不幸的是,我既不使用NetBeans也不使用Ant!

编辑添加:我发现我可以在Eclipse中设置一个Maven构建器,其具体目标是调用我正在使用的一些Maven插件(例如在我的情况下,目标是“datanucleus”) :增强流程资源“负责JDO增强,资源复制和native2ascii转换”。这使得java编译到Eclipse,但仍然可以与Maven实现某种程度的集成。

2 个答案:

答案 0 :(得分:1)

eclipse构建器为您提供中间和重复构建,但“Joel测试”实际上是指能够从源代码到单个步骤即可部署。如果你正在使用Maven,有几种方法可以解决它 - 包括从Eclipse中调用Maven作为命令行脚本。

mvn package

是我最常用于快速浏览整个构建设置的内容。您可以通过POM扩展Maven并根据需要注入一些其他机制。如果你变得有点复杂,通常最有效的方法是开始使用多模块POM和maven设置来集成功能测试并与其余代码一起运行。

基本上,让eclipse“做它的事情”与它的构建者一起利用它提供的东西,但是当你准备好使用最终产品时,从命令行通过持续集成服务器调用它(Hudson是一个很容易获得和设置 - 免费:http://hudson-ci.org/)。据推测,如果您正在使用Maven,您还可以将Archiva或Nexus的实例设置为生成库的DSL。您可以让hudson为常规签入版本调用“mvn deploy”,或者“mvn release:prepare&amp;&amp; mvn release:perform”,以便在您准备削减版本时(Hudson中的单独版本最适合此工作)< / p>

答案 1 :(得分:0)

您可以在IDE中进行无头构建。在eclipse中,您可以执行任意shell命令作为“外部工具”。在IDEA和netbeans中也是如此。至少,这是对无头构建的方便测试,无论何时对构建配置进行更改,都应该运行该构建。

另外,我想补充说,构建应该是一步作为最低要求。它也应该易于设置和易于调试。如果设置新的开发人员环境需要花费的时间超过几个小时,那么一步过程可能不是最佳的。需要注意的是,如果您每季度或每年添加或更换团队成员,这不是一个问题。