Java EE:需要更好的部署系统

时间:2010-03-05 15:26:46

标签: java deployment java-ee build-process

我们目前正在使用JDeveloper来构建我们的生产EAR。这样做的一个问题是,如果开发人员没有向VCS添加新文件,那么该开发人员是唯一能够创建EARS的人,因此他也可以使用未版本控制的文件。

将这个分开的好系统是什么,以便可以在不依赖于本地开发人员工作空间的情况下正确生成EAR文件(这也可以确保他们在允许进行部署/检查之前将其文件添加到VCS中 - 在)。

4 个答案:

答案 0 :(得分:3)

这是我的建议:

  1. 获得更好的IDE - IntelliJ,Eclipse或NetBeans。没有人使用JDeveloper
  2. 请开发人员检查Subversion或Git等中央版本控制系统。
  3. 使用Ant和Cruise Control或Hudson设置持续集成工具,以自动化您的构建。

答案 1 :(得分:3)

  

这样做的一个问题是,如果开发人员没有向VCS添加新文件,那么该开发人员是唯一能够制作EARS的人,

如果开发人员不使用VCS,这不是您唯一的问题:

  • 你不能在另一个环境中重现事物,你与开发者机器联系在一起(但你知道这一点)。如果他病了怎么办?
  • 不版本化文件意味着您没有任何修改历史记录,并且您不知道您投入生产的内容(“嗯,这个版本是什么?等等,让我们打开EAR来检查它。”)
  • 最后但并非最不重要的是,如果发生硬件故障(例如硬盘崩溃),您可以对VCS中没有的所有内容说再见。

所以,第一个要解决的问题是 ALWAYS 版本文件,即使只有一个开发人员单独工作也无法避免上述问题。应该提醒这些要点(开发人员需要了解它们以了解它们的重要性)。

为确保实现这一点,您实际上不应该依赖开发人员机器来构建EAR,而是依赖于“外部”流程,即引用。你想避免这种综合症:

alt text http://img716.imageshack.us/img716/9901/worksonmymachinestarbur.png

要实现这样的过程,您需要自动化构建(即您的整个构建可以在一个命令中运行)并打破与IDE的依赖关系。换句话说,不要使用IDE来构建您的EAR,而是使用MavenAnt之类的工具(这与IDE无关)。这将是第二次要解决的问题。

一旦您自动构建过程,您可以更进一步并连续运行:这称为Continuous Integration(CI)并允许频繁,理想情况下立即,反馈关于变更(以避免大爆炸集成问题)。那将是第三次要解决的问题。

鉴于您的实际工具集(远非理想,对您正在使用的工具没有太多社区支持),我的建议是使用Ant(或Maven,如果您对它有一些了解)进行构建和Hudson用于持续集成(因为它非常易于安装和使用,并且具有Dimensions plugin)。

答案 2 :(得分:1)

我们做的是使用cruisecontrol。它做了两件事,它允许我们进行持续集成构建,这样我们就可以在每次检查更改时构建每晚构建和轻量级构建。

我们还使用它来更具体地解决您的问题。当我们想要发货时,我们使用cruisecontrol启动构建,该构建使用正确的生产构建版本进行标记。它将从我们的版本控制系统(我们使用SVN)中获取代码,并将构建在该代码上,因此它不依赖于开发人员本地环境。

您可能还需要考虑的一件事是创建一个生产分支来构建。因此,特定版本的生产耳朵总是从该分支构建。通过这种方式,您甚至可以更好地控制构建内容。

答案 3 :(得分:0)

不是从开发人员工作区进行构建,而是设置Maven,并使用像Hudson这样的东西来运行你的Maven构建。这个版本(你的耳朵)的艺术品得到了部署。