【问题标题】:Gradle - Multi projects - flat directory structure all at same levelGradle - 多项目 - 平面目录结构都在同一级别
【发布时间】:2015-08-11 01:53:15
【问题描述】:

Gradle 多个独立的 Java 项目。具有相同级别的扁平文件夹结构。

我正在尝试创建这样的多 gradle Java 项目。

  • Child1 - 不依赖任何东西(数据层)
  • Child2 - 仅依赖于 Child1(业务层)
  • 父级 - 仅依赖于 Child2(服务层)

我只能使用以下配置使其工作。我不确定这是否是实现上述要求的正确方法。

Child2 - settings.gradle

include ':Child1'
project(':Child1').projectDir = new File(settingsDir, "../Child1"); 

Child2 - build.gradle

dependencies {
    compile project(':Child1')
}

父级 - settings.gradle

include ':Child1', ':Child2'
project(':Child1').projectDir = new File(settingsDir, "../Child1");
project(':Child2').projectDir = new File(settingsDir, "../Child2");

注意:- 我想知道我们为什么要在这里定义 Child1 的详细信息?因为 Parent 只需要 Child2 依赖。如果我没有像上面那样配置它就不起作用。

父级 - build.gradle

dependencies {
    compile project(':Child2')
}

【问题讨论】:

    标签: java eclipse gradle


    【解决方案1】:

    在多模块项目中,子项目的目录是父文件夹中的子文件夹。这是约定俗成的。如果您按照该约定对齐文件夹,那么需要进入构建文件的信息就会减少。

    以下是来自this question的示例。

    myproject
        |
    |-- ear
        |-- build.gradle
        |-- ...
    |-- core
        |-- build.gradle
        |-- ...
    |-- web
        |-- build.gradle
        |-- include core project as dependency for this project
        |-- ...
    |-- settings.gradle // has include "ear", "core", "web"
    

    由于您的结构不在此约定中,因此您需要明确说明子项的位置。 parent 和 child1 之间的关系是直接的,这与依赖库和该库可能具有的其他依赖项之间的关系不同。如果 child1 只是 child2 的依赖项,而不是 parent 的子项,那么您不必指出 chil1 的文件夹。但情况是 1)child1 是 parent 的孩子,2)您没有为多模块使用标准目录布局。所以现在你必须告诉 Gradle child1 在父构建脚本中的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-06
      • 2017-06-12
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 2014-10-15
      相关资源
      最近更新 更多