【问题标题】:How to work with multiple repositories of same project root in a workspace?如何在工作区中使用同一项目根目录的多个存储库?
【发布时间】:2021-01-14 19:12:15
【问题描述】:

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

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

/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. ApplicationApplicationInterface 依赖于ForkedExternalDependency
  3. ApplicationApplicationInterfaceForkedExternalDependency依赖于几个外部依赖并共享其中的一些
  4. /ProjectWorkspace/src/ 下的所有目录都是各自独立的存储库/包,具有自己的版本控制和构建脚本
  5. 不在/ProjectWorkspace/src/ 内的其余文件和目录是本地工作区文件,不予维护。
  6. IDE 中的项目(此处为 IntelliJ IDEA CE)预计将植根于/ProjectWorkspace
  7. 如果任何包在本地签出,我想使用它们,否则取决于远程发布。 (例如:如果 ApplicationInterface 包在 /ProjectWorkspace/src 中可用,我希望 Application 使用它。如果它在工作区本地不可用,我想 Application 使用来自远程存储库的依赖项。)

【问题讨论】:

  • 您能解释一下为什么要这样做吗?
  • 嗨@j-fabian-meier,我正在为爱好项目编写服务代码。它有一个包含多个支持库的主服务包。我也想在对依赖库进行更改时验证对服务的更改(手动调用和集成测试)。我工作的地方有一个构建工具,可以按照我指定的方式工作,但由于我的代码是一个爱好项目,我正在寻找公共替代方案来实现该行为。
  • 嘿@JFabianMeier 添加更多上下文,更多的库可以包括服务代码、服务接口、dao、dao-interface、核心、配置等。

标签: maven gradle build ant developer-tools


【解决方案1】:

根据标签,我假设您有一个 Java 项目。

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

如果您需要最大的灵活性,请选择 Gradle。但也请看看 Maven——他们构建项目的想法可能比你的更好。

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多