【问题标题】:Multiproject dependency management with gradle使用 gradle 进行多项目依赖管理
【发布时间】:2016-01-16 22:45:36
【问题描述】:

目前有 3 个项目/git repos 使用 gradle 设置:

  • 应用程序(java、android)
  • 后端(java、spring)
  • 客户端(java、vaadin)

依赖关系:

app    -> backend
client -> backend

由于appclient 不依赖于backend 中的所有内容,就像它们不依赖于spring 等一样,而是依赖于一些模型类,我需要为构建项目找到一个好的解决方案。

我想到了……

1。 backend神器

  • 2 个源文件夹,例如:src/main/javasrc/api/java
  • api源文件夹编译为jar神器
  • 包含在appclient

2。扩展 sourceSets

  • backend/src/api/java 添加到appclient

3。新的api 项目

app     -> api
client  -> api
backend -> api

结论

第一个和第二个解决方案不需要有第四个 git repo,我认为在 backend 中有 api 组件不是一个坏主意,但在 gradle 的上下文中,项目依赖项就像在 3 .,我认为会更透明。

有什么最佳做法吗?

感谢您的帮助!

【问题讨论】:

    标签: java android gradle dependency-management


    【解决方案1】:

    最佳实践是选项 3(创建一个新的 api 项目)。

    旁注:您不需要为 api 项目创建单独的 repo,如果需要,您可以将其与后端项目一起保存。

    编辑:添加回购布局

    如果您想将 api 放在服务器旁边,您会想要这种布局。然后引用project(":backend:api")之类的API

    .
    ├── app
    │   └── build.gradle
    ├── backend
    │   ├── api
    │   │   └── build.gradle
    │   └── server
    │       └── build.gradle
    ├── build.gradle
    ├── client
    │   └── build.gradle
    └── settings.gradle
    

    【讨论】:

    • 能否请您描述如何映射存储库、目录、gradle 构建文件等,我会将您的答案标记为已接受。我尝试了第三种方法,它就像一个魅力,但我希望 api 成为 backend 回购的一部分?
    • 当你说 repo 是什么意思(我假设你的意思是 git repo)
    • 正确。我当前的目录结构是:1 个根目录,4 个子目录(app、backend、client、api)。根目录是一个“根”git repo,其中包含 3 个子模块。在根目录中有一个build.gradlesettings.gradle,每个子目录中都有一个build.gradle。 appbackendclient 有一个 compile project(':api') 依赖,效果很好。现在的问题是,如何在一个 git repo 中获取backendapi?我认为它们必须在一个目录中。还是应该创建一个子目录backend 和另外两个子目录apiservercompile project(':backend:api')
    猜你喜欢
    • 2015-07-26
    • 2012-10-25
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 2013-06-22
    • 2013-06-15
    相关资源
    最近更新 更多