gpt4 book ai didi

java - 如何设置具有多个级别模块的项目以进行本地开发

转载 作者:行者123 更新时间:2023-12-02 05:22:18 25 4
gpt4 key购买 nike

我有多个应用程序项目,其布局大致如下:

  • 示例应用程序 (Java)
    • 具有附加功能的 Java 包装器
      • C++ + 浅层 Java 包装器
  • 第二个示例应用程序(颤振)
    • 颤振包装器
      • 具有附加功能的 Java 包装器
        • C++ + 浅层 Java 包装器
  • 第三个示例应用程序
    • 颤振包装器
      • 具有附加功能的 Java 包装器
        • C++ + 浅层 Java 包装器

所有应用程序共享相同的主要依赖项(具有附加功能的 java Wrapper)及其依赖项树。现在我正在每个应用程序上一直开发到 C++ 代码。它们在各自的父项目中作为 git 子模块进行管理。

由于整个过程的变化率很高,我希望构建最终的示例来进行所有来源的测试。

我尝试了几种方法将其整合到一个 gradle 构建中:

1。首选(但失败)的解决方案:每个项目中的settings.gradle,每个项目仅包含直接依赖项

现在我希望在一个 flutter 构建中管理这棵完整的树。所以我在每个项目的settings.gradle中添加了直接依赖项,只是为了了解gradle only supports one toplevel settings.gradle 。所以这是行不通的。上述问题中提出的解决方案主要尝试模拟对多个settings.gradle 文件的支持。

2。功能正常但丑陋:添加所有依赖项目都包含在顶级settings.gradle中

当每个子项目都完全了解其依赖项时,我真的必须将所有子项目手动包含在顶级 settings.gradle 中吗?此外,由于有多个项目依赖于此,我是否必须为每个项目手动执行此操作?

(甚至不要让我开始说 gradle 没有告诉我,我有一个错误的projectDir,因为我在递归下降的第 100 层中遇到了拼写错误!)

3。可能有效的解决方案:使用复合构建

这将触发构建,但现在我必须解决构建 Artifact 而不是项目。其他 Artifact 也有同样的问题。

4。可能可行的解决方案:将依赖项项目发布到 Maven(或其他)存储库并将其拉入应用程序

我没有尝试这个,因为我发现这个想法令人厌恶:我想测试 C++ 代码中的一个小更改,现在必须将其推送到存储库,并可能对上面的每个项目执行相同的操作?这适用于稳定的项目,但不适用于灵活的探索性开发。当然,我想在最后发布一些内容,但我不想发布中间的每一个小步骤。

<小时/>

这让我想知道:我做了什么不寻常的事情吗?我的意思是:是否没有人有同样的要求,而 gradle 似乎无法满足:

  1. 全程实时更新,以快速测试本地更改
  2. 顶层没有重复的传递依赖

这种情况下的常见做法是什么?

最佳答案

Lukas Körfer's comment之后我再次仔细研究了复合构建,发现我对它们有误解。我不明白他们的依赖关系解析将为我解决构建 Artifact 的查找问题。

现在我使用复合构建将整个构建结合在一起,同时使用

implementation 'my.group:project'

导入子项目的代码并

includeBuild '../path/to/subproject/'

把他们拉进来。

关于java - 如何设置具有多个级别模块的项目以进行本地开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56252214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com