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.
Если я копирую / вставляю только buildscript часть My build.gradle в их build.gradle , тогда он работает.Итак, должна быть проблема с разрешением / упорядочением.
Я думаю, что основной вопрос: как мне применить и настроить плагин из build.gradle , который сам по себе рассматривается какПлагин через применяется от ?