我试图选择最合适的构建系统,以在具有公共源代码库的企业中工作,强调共享通用代码。我想源层次结构看起来是这样的:构建系统,允许在不同的二进制文件之间共享模块
- src - java - common - net - database - team1 - team2 - team3 - lib - tests - java - common - net - database - team1 - team2 - team3 - lib
的目标是有一个构建系统,其中团队[1-3]可以独立建立明确指定它们的依赖。看起来像依赖关系:
- team1 - common/net - team3/lib - team2 - common/database - team3
因此,例如,建立TEAM1将包括TEAM1,普通/网,team3/lib目录内的一切;但没有别的。理想情况下,测试将以相同的方式进行集成(测试team1将运行team1,common/net和team3/lib的测试)。
我目前正在使用Ant,但还没有找到一种理智的方式来管理这样的层次结构。我开始考虑Maven 2管理依赖关系层次结构的能力,但它似乎需要为每个模块提供完整的项目。这不会是一个问题,但它似乎迫使我进入一个不能很好地映射到传统java包层次结构的目录结构。看起来,我可能能够使用alternative layout来使用buildr来做我想要的,但我担心这可能会变得脆弱。
有人可以推荐一些可能适合我的东西吗?
关键是我想支持在细粒度级别(与java包一样低)共享代码。因此,我希望模块的创建和细分尽可能无痛苦。 关于'传统的java包层次结构',我的意思是我想浏览版本库让你觉得你只是经历了一个巨大的java项目......实际上,构建系统只使用所需的部分每个版本。 – Bill 2009-12-14 10:14:05
Maven使模块的创建变得非常简单,但我不建议创建过细的模块,我不认为它真的有必要转到包级别。稍后我会更新我的答案以涵盖此。 – 2009-12-14 11:47:01