我们目前正在使用JDeveloper来构建我们的生产EAR。这样做的一个问题是,如果开发人员没有向VCS添加新文件,那么该开发人员是唯一能够创建EARS的人,因此他也可以使用未版本控制的文件。
将这个分开的好系统是什么,以便可以在不依赖于本地开发人员工作空间的情况下正确生成EAR文件(这也可以确保他们在允许进行部署/检查之前将其文件添加到VCS中 - 在)。
答案 0 :(得分:3)
这是我的建议:
答案 1 :(得分:3)
这样做的一个问题是,如果开发人员没有向VCS添加新文件,那么该开发人员是唯一能够制作EARS的人,
如果开发人员不使用VCS,这不是您唯一的问题:
所以,第一个要解决的问题是 ALWAYS 版本文件,即使只有一个开发人员单独工作也无法避免上述问题。应该提醒这些要点(开发人员需要了解它们以了解它们的重要性)。
为确保实现这一点,您实际上不应该依赖开发人员机器来构建EAR,而是依赖于“外部”流程,即引用。你想避免这种综合症:
alt text http://img716.imageshack.us/img716/9901/worksonmymachinestarbur.png
要实现这样的过程,您需要自动化构建(即您的整个构建可以在一个命令中运行)并打破与IDE的依赖关系。换句话说,不要使用IDE来构建您的EAR,而是使用Maven或Ant之类的工具(这与IDE无关)。这将是第二次要解决的问题。
一旦您自动构建过程,您可以更进一步并连续运行:这称为Continuous Integration(CI)并允许频繁,理想情况下立即,反馈关于变更(以避免大爆炸集成问题)。那将是第三次要解决的问题。
鉴于您的实际工具集(远非理想,对您正在使用的工具没有太多社区支持),我的建议是使用Ant(或Maven,如果您对它有一些了解)进行构建和Hudson用于持续集成(因为它非常易于安装和使用,并且具有Dimensions plugin)。
答案 2 :(得分:1)
我们做的是使用cruisecontrol。它做了两件事,它允许我们进行持续集成构建,这样我们就可以在每次检查更改时构建每晚构建和轻量级构建。
我们还使用它来更具体地解决您的问题。当我们想要发货时,我们使用cruisecontrol启动构建,该构建使用正确的生产构建版本进行标记。它将从我们的版本控制系统(我们使用SVN)中获取代码,并将构建在该代码上,因此它不依赖于开发人员本地环境。
您可能还需要考虑的一件事是创建一个生产分支来构建。因此,特定版本的生产耳朵总是从该分支构建。通过这种方式,您甚至可以更好地控制构建内容。
答案 3 :(得分:0)
不是从开发人员工作区进行构建,而是设置Maven,并使用像Hudson这样的东西来运行你的Maven构建。这个版本(你的耳朵)的艺术品得到了部署。