当前位置: 首页 > 知识库问答 >
问题:

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

李胡媚
2023-03-14

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

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

目标是在父级中配置gradle java插件的“配置Java”任务,以便所有子级都使用相同的配置。为了保持简单,我删除了特定于我的用例的配置。

文件内容如下所示。

渐变/设置。格雷德尔:

include ':parent:child'

gradle/父/构建。格雷德尔:

subprojects {
    apply plugin: 'java'

    configure([compileJava]) {
        logger.info("******* configuring compileJava! *******")
    }
}

渐变/父/子/构建。格雷德尔:

apply plugin: 'java'

Gradle/父/子/src/main/java/Foo.java:

class Foo{}

现在,如果我要调用:

gradle compileJava --info

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

如果org。格雷德尔。configureondemand设置为true,没有消息。如果是假的,你看;我收到我的日志信息。

我的下一个想法是,这一定是因为我对格雷德尔的看法。虽然我安装的(v1.11)和最新最棒的(v2.0)之间的行为是相同的。

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

共有1个答案

李星波
2023-03-14

对于按需配置,只有当前子项目的构建脚本和根项目的构建脚本以及任何依赖于项目的构建脚本将得到评估。但是,您的settings.gradle设置了一个三级项目层次结构(root-父-子),这意味着将无法配置。

 类似资料:
  • 如果我有一个像这样的gradle多项目 每个项目都有一个任务'foo',我可以在root项目上调用它 它还可以为子项目执行 但如果我从子项目调用task“:foo” 仅执行根项目上的任务 但不是子项目上的“foo”任务。 在子项目中,是否有方法对所有项目调用“foo”?我这样问是因为我使用的是gradle eclipse插件,在那里我只能访问子项目,即我在eclipse中看到的项目。 顺便说一句:

  • 是否可以设置子gradle项目的父项目。 在我的例子中,所有父子项目都位于文件层次结构中的同一级别。例如 > 代码 > /父项目 构建。格拉德尔 /child项目1 构建。格拉德尔 /子项目2 构建。格拉德尔 这里,项目1依赖于项目2,所以我将它们称为 也在我的设置中。gradle文件,我有 有了它,我可以从父项目文件夹运行任务,但单个任务不会从子项目运行。

  • 我想把我的项目分成几个子项目。IntelliJ IDE的默认渐变设置为: 这种设置可以编译。但我不想在每个子项目中重复这些代码。所以我改变了结构。格雷德尔。kts至 但我有例外: e:C:[…]\建造。格雷德尔。kts:1:12:未解析引用:jetbrains e:C:[…]\建造。格雷德尔。kts:16:9:未解析引用:实现e:C:[…]\建造。格雷德尔。kts:19:20:未解析引用:Kotl

  • 我有以下多项目分级建设: 3个子项目分级文件中的每一个目前都非常简单: 以下是我想要达到的目标: 当我从父目录运行时,我希望所有三个子项目都使用0.1.5版本生成;因此,、和。但是,当前我的构建已经执行此操作... 如果客户端和共享JAR成功构建,我还希望将它们发布到我的私有Artifactory repo中。(我不希望发布服务器JAR)。 我的问题是:如何将这个片段添加到我的项目中,这样从父目录

  • 我一直在尝试使用Kotlin DSL以一种类型安全的方式转换我的项目的Gradle文件,但到目前为止还是失败了。我的所有项目都是Java中的多项目构建。其思想是对子模块的公共配置进行因子分解/重复数据删除(不管是在根模块的“subprojects”块中,还是在单独的“kts”文件中,我不关心)。官方文档指出,不可能对“子项目”和应用程序(从='shared.gradle.kts')进行类型安全(h

  • 我有一个多项目的gradle构建,其中一个子项目是应用Artifactory插件(版本4.2.0),并配置contextUrl和resolve repoKey。 它设置一个简单的配置和依赖项,然后有一个复制任务来检索依赖项作为zip文件并将其解压缩到目录中。 然而,当复制任务运行时,我得到下面的错误。我做错了什么?这是Artifactory插件或gradle的问题,还是。。。? 问题似乎与该项目是