问题描述
我想在一个项目目录中处理同一项目的多个存储库。我该如何有效地做到这一点?是否有任何构建/项目管理工具可以做到这一点?
例如,考虑工作区项目结构:
/ProjectWorkspace/
|-> build/(build artifacts of Application,ApplicationInterface,ForkedExternalDependency)
|-> logs/
|-> src/
|-> Application/
| |-> src/com.example.*
| |-> tst/com.example.*
| |-> gradle-build-scripts
| |-> .git/
|
|-> ApplicationInterface/
| |-> src/com.example.*
| |-> tst/com.example.*
| |-> ant-build-scripts
| |-> .git/
|
|-> ForkedExternalDependency/
|-> src/
|-> some-other-build-scripts
|-> .git/
几件事要注意:
- 应用程序取决于 ApplicationInterface
- 应用, ApplicationInterface 取决于 ForkedExternalDependency
- 应用程序, ApplicationInterface , ForkedExternalDependency 依赖于多个外部依赖项并共享其中一部分
-
/ProjectWorkspace/src/
下的所有目录都是各自的单独存储库/程序包,具有自己的版本控制和构建脚本 -
/ProjectWorkspace/src/
之外的其他文件和目录是本地工作空间文件,并且不维护。 - IDE(此处为IntelliJ IDEA CE)中的项目应该植根于
/ProjectWorkspace
- 如果有任何软件包在本地签出,则我想使用它们,否则取决于远程发布。 (例如:如果 ApplicationInterface 包在
/ProjectWorkspace/src
中可用,我希望 Application 使用它。如果在工作区本地不可用,我想应用以使用来自远程存储库的依赖项。)
解决方法
从标签中,我假设您有一个Java项目。
您应该使用Maven或Gradle来构建它(Ant已过时)。 Maven有一个非常好的项目结构,但是您需要坚持下去,而不是发明自己的项目。
如果您需要最大的灵活性,请使用Gradle。但是也请看一下Maven,他们构架项目的想法可能比您的想法要好。