Gradle - 多项目 - 平面目录结构都在同一级别

时间:2015-08-10 16:57:15

标签: java eclipse gradle

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依赖项。如果我不像上面那样进行配置,它就不起作用。

Parent - build.gradle

dependencies {
    compile project(':Child2')
}

enter image description here

1 个答案:

答案 0 :(得分:1)

在多模块项目中,子项目的目录是父文件夹中的子文件夹。这是按惯例。如果您在该约定中对齐文件夹,则需要将更少的信息放入构建文件中。

以下是this question的示例。

.controller('makeOrderController', function ($scope, $timeout, $ionicLoading) {
  // Check if searchKeyword exists or declare it
  $scope.searchKeyword = $scope.searchKeyword || {};

  $scope.searchMenuFilter = function () {
    return function (data) {
      if (data != undefined) {
          var result = JSLINQ(data)
              .Where(function (item) { 
                // searchKeyword is not defined in this code snippet
                return (item.name.match(/\b(\w)/g).join('') == $scope.searchKeyword);
              });
          console.log($scope);
          console.log($scope.searchKeyword); // Not defined in code snippet
          return result.items;
      }
      else {
          return null;
      }
    }
  }
});

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