Gradle子项目配置没有被configureondemand=true调用



下面是我的用例的一个类似的项目布局:

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

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

文件内容如下所示。

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/main/java/Foo.java:

class Foo{}

现在,如果我调用:

gradle compileJava --info

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

如果org.gradle.configureondemand设置为true,则无消息。如果是假的,你瞧;我收到了日志信息。

我的下一个想法是,这一定是由于我的gradle版本。虽然我安装的版本(v1.11)和最新最好的版本(v2.0)之间的行为是相同的。

我的问题是,就按需配置而言;这是设计所期望的吗?还是这是个bug?在Gradle JIRA实例上可能有一些相关的问题,但是我对这个项目不太熟悉,无法确定是否有一个现有的项目可能已经涵盖了这个行为。

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

相关内容

  • 没有找到相关文章

最新更新