我们公司大约8个月前开始使用Maven.它会强制您将项目组织到逻辑模块中.之前,我们有两个项目用于客户端/服务器应用程序,具有循环依赖性.现在我们有一个共享代码的框架项目,以及用于独特内容的单个服务器和客户端项目.我们所有的"独立"应用程序(自定义安装程序构建器等)也可以从框架中分支出来.根据您的设置的复杂程度,"Mavenize"您的项目可能会非常耗时.但是,我发现,一旦你这样做,依赖管理等问题就不再是一个积极的问题.
Maven也很有用,因为它很好地与Hudson挂钩,Hudson是一个持续集成服务器.Hudson将为您定期构建,无论是定期轮询Subversion,还是每晚都进行.它也会自动完成所有单元测试(你/是/使用JUnit或类似的适当框架,对吧?)Hudson的设置非常简单.您可以使用最少的配置立即将其部署到Tomcat中.如果您想使用Sonar等工具,它可以提供不错的插件选择.
Subversion是一种相当流行的源代码控制工具.我不介意; 这是我最有经验的.我玩Mercurial,但还不足以将Subversion与它进行对比.使用Subversion最重要的事情是如何正确分支和合并.知道这一点将允许您为不相交的功能请求,错误修复等维护单独的分支.您可以更轻松地为QA /您的测试组进行实验性构建或特殊构建.合并可能很痛苦.我听过一些恐怖故事,但我遇到的最糟糕的事情是处理在团队工作时出现的"正常"冲突.
我已经遗漏了Trac,因为我之前没有听过这个名字的经验.编辑:快速谷歌告诉我它是错误跟踪软件.我对Bugzilla有了不错的运气,Bugzilla是另一个开源的bug跟踪器,但正确配置它会加剧和升级可能是一场噩梦,因为它的权限设置有多挑剔,特别是在尝试与suexec集成时.因人而异