我们目前正在使用JDeveloper来构建我们的生产EAR。这样做的一个问题是,如果开发人员不向VCS添加新文件,那么该开发人员是唯一能够制作EARS的人,因此他也可以使用未版本化的文件。
有什么好的系统可以分离这一点,以便可以正确地生成EAR文件,而不依赖于本地开发人员工作区(这也将确保他们在允许进行部署/签入之前将其文件添加到VCS中)。
发布于 2010-03-06 01:33:53
这样做的一个问题是,如果开发人员不向VCS添加新文件,那么该开发人员是唯一能够制作EARS的人,
如果开发人员不使用VCS,这不是您唯一的问题:
因此,首先要修复的是版本的文件,即使只有一个开发人员,因为单独工作并不能将您从所提到的问题中解救出来。应该提醒这些要点(开发人员需要意识到它们才能理解它们的重要性)。
为了确保这种情况发生,您实际上不应该依赖开发人员机器来构建EAR,而应该依赖于一个“外部”进程,即引用。你想要避免这种症状:
alt text http://img716.imageshack.us/img716/9901/worksonmymachinestarbur.png
要将这样的过程放在适当的位置,您需要使用自动化构建(即,整个构建可以在一个命令中运行),并打破与集成开发环境的依赖。换句话说,不要使用集成开发环境来构建您的EAR,而要使用Maven或Ant之类的工具(这些工具与集成开发环境无关)。这将是第二个要解决的问题。
一旦您实现了构建过程的自动化,您就可以更进一步并持续地运行它:这称为Continuous Integration (CI),它允许获得关于更改的频繁反馈( frequent,理想情况下是即时的)反馈()(以避免大爆炸集成问题)。这将是第三个要解决的问题。
考虑到您的实际工具集(这并不理想,社区对您正在使用的工具没有太多的支持),我的建议是使用Ant (或者Maven,如果您对它有所了解)进行构建,使用Hudson进行持续集成(因为它非常容易安装和使用,而且它有一个Dimensions plugin)。
发布于 2010-03-05 23:30:26
这是我的建议:
发布于 2010-03-05 23:34:09
我们要做的就是使用cruisecontrol。它做了两件事,它让我们进行持续的集成构建,这样我们就有了夜间构建以及每次检查更改时构建的轻量级构建。
我们还使用它来更具体地解决您的问题。当我们想要发布时,我们使用cruisecontrol来启动一个构建,该构建被标记为适当的生产构建版本。它将从我们的版本控制系统(我们使用SVN)获取代码并在此基础上进行构建,因此它不依赖于开发人员的本地环境。
您可能还需要考虑的一件事是创建一个要构建的生产分支。因此,特定版本的生产ears始终是从该分支构建的。这样,您甚至可以对构建中的内容有更多的控制。
https://stackoverflow.com/questions/2387817
复制相似问题