多模块项目中的gradle继承

时间:2018-05-30 06:28:09

标签: gradle

update 05/30/18

我认为技术问题是由于ToYonos与之相关的问题。

所以,让我扩大非技术性问题:

我有一个多模块项目,其中许多部分由许多不同的人拥有。我们遵循模块中的类似结构,但没有直接继承。让我们说一下:

  • 模块1 /
    • 的java /
      • 服务/
        • 服务1 /
      • 公共/
        • LIBRARY1 /
  • 模块2 /
    • 的java /

每个模块以相同的方式松散地做同样的事情,但略有不同; )我们希望在每一层提取公共部分并将它们放在一个公共文件中,但仍允许每个模块在每一层都有自己的自定义。

我希望'申请'可以做到这一点,但似乎存在限制(导出方法,插件等),这都是由于范围问题和gradle的自上而下的命令和控制风格。

我看到的一种方法是完全搞砸了settings.gradle:

include ':module1'
include ':module1:java'
include ':module1:java:services'
include ':module1:java:services:service1'

对此:

include ':root_common'
project(':root_common').projectDir = "$rootDir/common" as File

include ':root_common:module1'
project(':root_common:module1').projectDir = "$rootDir/module1" as File

include ':root_common:module1:module_common'
project(':root_common:module1:module_common').projectDir = "$rootDir/common/module" as File

include ':root_common:module1:module_common:java'
project(':root_common:module1:module_common:java').projectDir = "$rootDir/module1/java" as File

include ':root_common:module1:module_common:java:java_common'
project(':root_common:module1:module_common:java:java_common').projectDir = "$rootDir/common/java" as File

include ':root_common:module1:module_common:java:java_common:services'
project(':root_common:module1:module_common:java:java_common:services').projectDir = "$rootDir/module1/java/services" as File

.... and so on ....

这似乎相当难以管理。还有更好的方法吗?

original 05/29/18

我有以下工作:

我的 build.gradle

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    ext {
        dockerPluginVersion = '0.19.2'
    }
    dependencies {
        classpath "gradle.plugin.com.palantir.gradle.docker:gradle-docker:${dockerPluginVersion}"
    }
}

apply plugin: "com.palantir.docker"
apply plugin: "com.palantir.docker-run"

docker {
    ....
}

我希望其他人的 build.gradle 能够使用与上面 build.gradle 相同的配置而无需复制/粘贴,所以我想出了以下内容:

其他人的 build.gradle

apply from: ${rootDir}/common/docker/build.gradle

当我运行上述内容时,我得到了

* What went wrong:
A problem occurred evaluating script.
> Plugin with id 'com.palantir.docker' not found.

如果我只将My build.gradle buildscript 部分复制/粘贴到 build.gradle ,那么它可以正常工作。所以,必须是一些解决方案/订购问题。

我认为基本问题是:我如何申请&从 build.gradle 中配置插件,该插件本身通过 apply from 处理为插件?

0 个答案:

没有答案