代码之家  ›  专栏  ›  技术社区  ›  Todd Owen

命令行生成的最佳实践

  •  3
  • Todd Owen  · 技术社区  · 15 年前

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

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

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

    编辑以添加: 我发现我可以在Eclipse中设置一个Maven构建器,其中包含特定的目标,这些目标调用我正在使用的一些Maven插件(例如,在我的例子中,目标是“da”)tanucleus:enhance process-resources“注意JDO增强、资源复制和native2ascii转换)。这使得java编译由Eclipse来完成,但仍然实现了与Maven的某种程度的集成。

    2 回复  |  直到 9 年前
        1
  •  1
  •   heckj    15 年前

    eclipsebuilder提供了中间的和重复的构建,但是“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 &&mvn公司release:perform“当您准备削减发行版时(Hudson中的单独版本最适合于此)

        2
  •  0
  •   sal    15 年前

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

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

    推荐文章