有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javaee:需要更好的部署系统

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

一个好的系统可以将此分离开来,以便在不依赖本地开发人员工作区的情况下正确生成EAR文件(这还可以确保他们在允许进行部署/签入之前将文件添加到VCS)


共 (4) 个答案

  1. # 1 楼答案

    以下是我的建议:

    1. 获得更好的IDE—IntelliJ、Eclipse或NetBeans。没有人使用JDeveloper
    2. 让开发人员检查像Subversion或Git这样的中央版本控制系统
    3. 使用Ant和Cruise Control或Hudson建立一个持续集成设施,以实现构建的自动化
  2. # 2 楼答案

    One problem with this is that if the developer doesn't add new files to a VCS, then that developer is the only one capable of making EARS,

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

    • 您无法在另一个环境中复制内容,因为您被绑定到开发人员机器(但您知道这一点)。如果他病了怎么办
    • 没有版本控制文件意味着你没有任何修改的历史记录,也不知道你在生产中投入了什么(“嗯,这个版本是什么?等等,让我们打开EAR检查一下。”)
    • 最后但并非最不重要的一点是,如果出现硬件故障(例如硬盘驱动器崩溃),您可以向VCS中没有的一切说再见

    因此,要解决的第一件事是始终版本文件,即使只有一个开发人员,因为单独工作并不能避免上述问题。应提醒这些要点(开发人员需要了解这些要点以了解其重要性)

    为了确保实现这一点,您实际上不应该依赖开发人员机器来构建EAR,而应该依赖一个“外部”过程,这将是参考。您希望避免这种综合症:

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

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

    一旦您实现了构建过程的自动化,您就可以更进一步并持续运行它:这被称为Continuous Integration(CI),并允许获得有关更改的频繁的,理想情况下是立即的反馈(以避免大爆炸集成问题)。这将是第三个需要解决的问题

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

  3. # 3 楼答案

    与其从开发人员工作区进行构建,不如安装Maven,让Hudson之类的东西运行Maven构建。这个构建(您的ear)的工件得到部署

  4. # 4 楼答案

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

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

    你可能还想考虑的一件事是创建一个生产分支。因此,特定版本的产品耳始终是从该分支构建的。这样,您甚至可以更好地控制构建中的内容