这是我的用例的类似项目布局:
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但我对该项目不够熟悉,无法确定现有项目是否已涵盖此行为。
答案 0 :(得分:1)
使用按需配置,只会评估当前子项目的构建脚本和根项目的构建脚本,以及任何依赖项目的构建脚本。但是,您的settings.gradle
设置了三级项目层次结构(root-parent-child),这意味着parent
无法配置。