2011-08-04 44 views
3

假设有两家软件公司,A & B.两家公司都有大约几百个Eclipse项目。两者都有一些应用程序最终产品。每个最终产品项目的依赖性都不相同。非jar SVN依赖管理

A依靠maven进行依赖管理。它实践代码冻结,因此将项目彼此分离,因此能够发挥依赖关系的作用。

B依赖于Eclipse Subversive插件。对于任何特定的最终产品项目,它所依赖的所有项目都将从SVN中检出并包含在Eclipse项目构建路径中。如果一个项目依赖于50个项目,则所有50个项目都将受到源代码修改的影响,这就是为什么他们不使用Maven。

这两家公司合并为AB。希望有一个像依赖管理这样的m​​aven,也可以在SVN仓库上工作。也就是说,假设的POM应该能够指定jar依赖(公司A风格)还是SVN源代码依赖(公司B风格)。如果依赖项是一个jar文件,它应该将依赖项从存储库中拖放到开发人员的工作站的maven缓存中。如果依赖关系是SVN中的源代码,它应该将其检入到SVN工作目录中。

AB公司应该如何从技术角度统一两种构建态度?我指定“技术上”来避免将会处理微观管理或修改合并后公司开发人员的哲学态度的答案。

Gradle会有帮助吗?如果是这样,为什么?还有其他的选择

回答

3

假设B公司创建的项目创建包装(罐子)产品作为其交付/构建的一部分。如果是这种情况,那么公司AB可以创建自己的工件存储库(我的公司使用Artifactory),而公司B的项目可以手动(或自动)作为版本化版本或快照方式添加到该存储库。然后,公司A项目可以将它们的依赖项指定为jar依赖项并从artifactory中提取。

对于深度依赖和频繁编辑的项目,我建议将它们作为一个根项目的子项目。

我的上述建议都不需要使用Gradle,但Gradle使这些很容易实现。

2

svn:外部是一种技术解决方案。然后教育滥用svn的开发者,Maven依赖关系不那么糟糕。