Здесь аналогичная схема проекта моего варианта использования:
gradle
├── parent
│ ├── build.gradle
│ └── child
│ ├── build.gradle
│ └── src
│ └── main
│ └── java
│ └── Foo.java
└── settings.gradle
С целью настройки задачи "configureJava" плагина java gradle в родительском, так что все дети будут использовать одну и ту же конфигурацию. Чтобы все было просто, я удалил конфигурацию, специфичную для моего прецедента.
Содержимое файла указано ниже.
Gradle/settings.gradle:
include ':parent:child'
Gradle/родитель/build.gradle:
subprojects {
apply plugin: 'java'
configure([compileJava]) {
logger.info("******* configuring compileJava! *******")
}
}
Gradle/родитель/ребенок /build.gradle:
apply plugin: 'java'
Gradle/родитель/ребенок /SRC/главная /Java/Foo.java:
class Foo{}
Теперь, если я должен вызвать:
gradle compileJava --info
Независимо от того, выводится ли мое сообщение журнала, как индикатор, который запускает задача подпроекта, зависит от конкретного свойства конфигурации: org.gradle.configureondemand
.
Если для org.gradle.configureondemand
установлено значение true, нет сообщения. Если ложь, то иди; Я получаю сообщение в журнале.
Моя следующая мысль заключается в том, что это связано с моей версией градиента. Хотя поведение между тем, что я установил (v1.11) и последним и самым большим (v2.0), одинаково.
Мой вопрос в том, что касается настройки по требованию; это ожидается по дизайну? Или это ошибка? Есть несколько возможных билетов на экземпляр Gradle JIRA, однако я недостаточно осведомлен о том, что проект может быть уверен, что существующий элемент может уже охватить это поведение.
При настройке по требованию будет оцениваться только текущий скрипт сборки подпроекта и сценарий создания корневого проекта, а также только те, которые зависят от проектов. Однако ваши settings.gradle
устанавливают трехуровневую иерархию проектов (root-parent-child), что означает, что parent
элемент не будет настроен.
apply from:
для включения общей логики в сценарии подпроекта.