未使用configureondemand = true调用Gradle子项目配置

时间:2014-08-09 16:50:43

标签: java gradle

这是我的用例的类似项目布局:

gradle
├── parent
│   ├── build.gradle
│   └── child
│       ├── build.gradle
│       └── src
│           └── main
│               └── java
│                   └── Foo.java
└── settings.gradle

目标是配置' configureJava'父级中的gradle java插件的任务,以便所有子级将使用相同的配置。为了简单起见,我删除了特定于我的用例的配置。

文件内容如下所示。

的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 /主/爪哇/ Foo.java:

class Foo{}

现在,如果我要调用:

gradle compileJava --info

是否输出我的日志消息,作为子项目配置任务启动的指示符,取决于特定的配置属性:org.gradle.configureondemand

如果org.gradle.configureondemand设置为true,则不显示任何消息。如果是假的,请注意;我收到了我的日志消息。

我的下一个想法是,这必须归功于我的gradle版本。虽然我安装的内容(v1.11)与最新版本(v2.0)之间的行为是相同的。

我的问题是,就按需配置而言;这是设计的预期吗?或者这是一个错误?有一小部分possibly related tickets on the Gradle JIRA instance但我对该项目不够熟悉,无法确定现有项目是否已涵盖此行为。

1 个答案:

答案 0 :(得分:1)

使用按需配置,只会评估当前子项目的构建脚本和根项目的构建脚本,以及任何依赖项目的构建脚本。但是,您的settings.gradle设置了三级项目层次结构(root-parent-child),这意味着parent无法配置。