update 05/30/18
我认为技术问题是由于ToYonos与之相关的问题。
所以,让我扩大非技术性问题:
我有一个多模块项目,其中许多部分由许多不同的人拥有。我们遵循模块中的类似结构,但没有直接继承。让我们说一下:
每个模块以相同的方式松散地做同样的事情,但略有不同; )我们希望在每一层提取公共部分并将它们放在一个公共文件中,但仍允许每个模块在每一层都有自己的自定义。
我希望'申请'可以做到这一点,但似乎存在限制(导出方法,插件等),这都是由于范围问题和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 处理为插件?