【问题标题】:Infer dependencies in Gradle subproject from its parent project从其父项目推断 Gradle 子项目中的依赖项
【发布时间】:2022-01-18 06:30:18
【问题描述】:

我的 Gradle 项目中目前有 3 个子项目,结构如下:

Main Project
| 
-- Project A
-- Project B
-- Common Src

Project A 依赖 Lib A 和 Common Src,Project B 依赖 Lib B 和 Common Src。 Lib A 和 Lib B 包含相同类的不同实现。

我对 Common Src 项目的计划是容纳所有实用程序类,这必然取决于 Lib A 和 Lib B。

有没有办法设置它,我的 gradle 项目应该是什么样子?

我尝试过的事情:

  1. 我尝试将 Common Src 作为子项目删除,并将其包含在项目 A 和项目 B 的 sourceSets 中。但是,IntelliJ 似乎将 Common Src 标记为项目 A 的源根,即使构建通过- gradle 工作,我无法让 IntelliJ 识别项目 B 在 Common Src 中也有源根。
  2. 将 Lib A 和 Lib B 添加到 Common Src 的依赖项中,但显然这不起作用。

背景:

我创建了一个兼容 Forge(项目 A)和 Fabric(项目 B)模块加载器的 Minecraft 模块。我在两个项目中都有实用程序类,它们具有相同的源代码,但需要编译两次,每次都具有不同的依赖项。我不想每次要更改实用程序类中的某些内容时都必须编写两次代码。

【问题讨论】:

    标签: java gradle intellij-idea minecraft-forge minecraft-fabric


    【解决方案1】:

    编辑:我找到了解决方法:

    1. Project AProject B 中,在各自的build.gradle 中添加一个任务,将Common Src 中的源文件复制到每个项目的构建目录中。
    2. Project AProject BsourceSets 配置为包含我们刚刚复制到的构建文件夹中的源文件
    3. Common Src配置为gradle子项目,并将Lib A(或Lib B)添加到Common Src的依赖项中(只是为了获得IntelliJ的一些上下文)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-19
      • 1970-01-01
      • 2022-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      相关资源
      最近更新 更多