Настройка подпроекта Gradle не вызывается с помощью configureondemand = true

1

Здесь аналогичная схема проекта моего варианта использования:

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, однако я недостаточно осведомлен о том, что проект может быть уверен, что существующий элемент может уже охватить это поведение.

Теги:
gradle

1 ответ

1
Лучший ответ

При настройке по требованию будет оцениваться только текущий скрипт сборки подпроекта и сценарий создания корневого проекта, а также только те, которые зависят от проектов. Однако ваши settings.gradle устанавливают трехуровневую иерархию проектов (root-parent-child), что означает, что parent элемент не будет настроен.

  • 0
    Понимаю. Я предполагал, что раздел «подпроект» подразумевает отношения «зависимость». Вы бы сказали, что лучше всего настроить конкретные подпроекты в корневом проекте? Настройка по требованию дает огромный прирост скорости в повседневных задачах, и я надеюсь структурировать вещи, чтобы сохранить это средство
  • 0
    Либо это, либо используйте apply from: для включения общей логики в сценарии подпроекта.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню