繁体   English   中英

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

[英]How to setup a project with multiple levels of modules for local development

我有几个大致这种布局的应用程序项目:

  • 示例应用程序(Java)
    • Java Wrapper具有附加功能
      • C ++ +浅Java包装器
  • 第二个示例app(颤动)
    • 扑翼包装
      • Java Wrapper具有附加功能
        • C ++ +浅Java包装器
  • 第3个示例应用
    • 扑翼包装
      • Java Wrapper具有附加功能
        • C ++ +浅Java包装器

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

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

我尝试了几种将这种方法绑定到一个gradle构建中的方法:

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

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

2.功能但丑陋:添加所有依赖项目都包含在toplevel settings.gradle中

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

(甚至不要让我告诉我不要告诉我,我有一个错误的项目,因为我在100rth级别的递归下降中得到一个错字!)

3.可能工作的解决方案:使用复合构建

这将触发构建,但现在我必须解决构建工件而不是项目。 与其他工件一样的问题。

4.可能工作解决方案:将依赖项目发布到maven(或其他)存储库并将其拉入应用程序

我没有尝试这个,因为我发现这个想法很有用:我想测试C ++代码中的一个小变化,现在必须将其推送到存储库,并且可能在上面的每个项目上都做同样的事情? 这适用于稳定的项目,但不适用于灵活的探索性开发。 当然,我想在最后发布一些内容,但我不想发布它们之间的每一个小步骤。


这让我想知道:我做的事情不寻常吗? 我的意思是:有没有人有同样的要求gradle似乎不适合:

  1. 实时更新从一直到快速测试本地更改
  2. 不重复对顶层的传递依赖

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

LukasKörfer的评论之后,我再次仔细研究了复合构建,并注意到我对它们有一种误解。 我不明白他们的依赖解析会解决我的构建工件的发现。

现在我使用复合构建在使用时将整个构建绑定在一起

implementation 'my.group:project'

导入子项目的代码和

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

把他们拉进来

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM