Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 命令行生成的最佳实践_Eclipse_Maven 2_Command Line_Build - Fatal编程技术网

Eclipse 命令行生成的最佳实践

Eclipse 命令行生成的最佳实践,eclipse,maven-2,command-line,build,Eclipse,Maven 2,Command Line,Build,问题的第2项是“你能一步完成一个构建吗”,但实现这一点的最佳(或普遍接受的)方法是什么?与维护完全独立于IDE的构建脚本(例如,在Java项目中使用Ant或Maven)相比,使用IDE的命令行界面进行构建的优缺点是什么 我问这个问题是因为我正在试验Maven,并且有点惊讶地发现,即使在使用m2eclipse插件时,在项目中关闭Eclipse的Java Builder并将整个构建过程委托给Maven也是不可行的。似乎如果我想将项目迁移到Maven,我将不得不维护两个等效但不同的构建过程,例如,命令

问题的第2项是“你能一步完成一个构建吗”,但实现这一点的最佳(或普遍接受的)方法是什么?与维护完全独立于IDE的构建脚本(例如,在Java项目中使用Ant或Maven)相比,使用IDE的命令行界面进行构建的优缺点是什么

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

我推测NetBeans使用Ant进行构建,这听起来似乎可以解决这个问题。但不幸的是,我既没有使用NetBeans,也没有使用Ant


编辑后添加:我发现我可以在Eclipse中设置一个Maven builder,其中包含调用我正在使用的一些Maven插件的特定目标(例如,在我的例子中,目标“datanucleus:增强流程资源”负责JDO增强、资源复制和Native2ASCI转换)。这使得java编译由Eclipse来完成,但仍然实现了与Maven的某种程度的集成。

Eclipse builder提供了中间和重复的构建,但“Joel测试”实际上是指能够在一个步骤中从源代码到准备部署某些东西。如果您使用的是Maven,有几种方法可以使用它——包括在Eclipse中作为命令行脚本调用Maven

mvn package
这是我在快速运行整个构建设置时最常用的方法。如果愿意,可以通过POM扩展Maven并注入一些额外的机制。如果您变得更复杂一些,那么开始使用多模块POM和maven设置来集成功能测试并与其余代码一起运行通常是最有效的


基本上,让eclipse用它的构建器“做它自己的事情”,并利用它提供的功能,但是当您准备好使用最终产品时,可以通过一个持续集成服务器从命令行调用它(Hudson是一个很容易获取和设置的工具,也是免费的:)。假设您正在考虑使用Maven,那么您还将有一个Archiva或Nexus实例作为生成库的DSL。您可以让hudson为常规签入版本调用“mvn deploy”,或在准备削减版本时调用“mvn release:prepare&&mvn release:perform”(hudson中的单独版本最适合此功能)

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


另外,我想补充一点,构建应该是一步完成的,这是最低要求。它还应该易于设置和调试。如果建立一个新的开发人员环境所需的时间超过几个小时,那么一步操作的过程可能不太理想。这需要注意的是,如果您每季度或每年增加或更换团队成员,那么问题就不会那么严重。

好的,所以基本上这是两个不同的过程。我怀疑我可能不得不接受这一点,但我想先听听其他开发人员的意见。(如果Eclipse只是开箱即用,这甚至不是问题,但我必须手动配置许多东西,如JDO增强、native2ascii转换和WAR部署,有效地复制POM中已经声明的内容,这一事实让我开始思考)。我变得更聪明了,我发现我至少可以将部分工作委托给Maven(参见上面的编辑)。通过非常仔细地定义“步骤”…我认为OP在这里的意思是运行Eclipse构建headless(从命令行),而不是相反。因为他能做到这一点,为什么需要一个Maven构建和一个并行维护等等(短版本)?