如何在工作空间中使用相同项目根目录的多个存储库?

问题描述

我想在一个项目目录中处理同一项目的多个存储库。我该如何有效地做到这一点?是否有任何构建/项目管理工具可以做到这一点?

例如,考虑工作区项目结构:

/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/

几件事要注意:

  1. 应用程序取决于 ApplicationInterface
  2. 应用 ApplicationInterface 取决于 ForkedExternalDependency
  3. 应用程序 ApplicationInterface ForkedExternalDependency 依赖于多个外部依赖项并共享其中一部分
  4. /ProjectWorkspace/src/下的所有目录都是各自的单独存储库/程序包,具有自己的版本控制和构建脚本
  5. /ProjectWorkspace/src/之外的其他文件和目录是本地工作空间文件,并且不维护。
  6. IDE(此处为IntelliJ IDEA CE)中的项目应该植根于/ProjectWorkspace
  7. 如果有任何软件包在本地签出,则我想使用它们,否则取决于远程发布。 (例如:如果 ApplicationInterface 包在/ProjectWorkspace/src中可用,我希望 Application 使用它。如果在工作区本地不可用,我想应用以使用来自远程存储库的依赖项。)

解决方法

从标签中,我假设您有一个Java项目。

您应该使用Maven或Gradle来构建它(Ant已过时)。 Maven有一个非常好的项目结构,但是您需要坚持下去,而不是发明自己的项目。

如果您需要最大的灵活性,请使用Gradle。但是也请看一下Maven,他们构架项目的想法可能比您的想法要好。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...