gpt4 book ai didi

gradle - 从另一个Gradle项目的配置扩展

转载 作者:行者123 更新时间:2023-12-03 03:26:27 25 4
gpt4 key购买 nike

我不想用项目a中的配置扩展项目b中的配置。

如果两个配置都在同一个项目中,则可以执行以下操作:

configurations.conf1.extendsFrom configurations.conf2

如何在不同项目中实现相同的配置?

下面是一个最小的示例,该示例由于未继承依赖关系而当前不起作用。

示例文件夹设置:
a / build.gradle
b / build.gradle
settings.gradle

a / build.gradle:
repositories {
mavenCentral()
}
configurations {
aconf
}
dependencies {
aconf 'abbot:abbot:1.4.0'
}

b / build.gradle
configurations {
bconf
}
configurations.bconf.extendsFrom project(':a').configurations.aconf

settings.gradle
include ':a'
include ':b'

执行./gradlew:a:dep:b:dep -i显示bconf不会从aconf继承依赖项。
Included projects: [root project 'projectDeps', project ':a', project ':b']

> Configure project :
Evaluating root project 'projectDeps' using build file '/projectDeps/build.gradle'.

> Configure project :a
Evaluating project ':a' using build file '/projectDeps/a/build.gradle'.

> Configure project :b
Evaluating project ':b' using build file '/projectDeps/b/build.gradle'.
All projects evaluated.
Selected primary task ':a:dependencies' from project :a
Selected primary task ':b:dependencies' from project :b
Tasks to be executed: [task ':a:dependencies', task ':b:dependencies']
:a:dependencies (Thread[Task worker for ':',5,main]) started.

> Task :a:dependencies
Task ':a:dependencies' is not up-to-date because:
Task.upToDateWhen is false.

------------------------------------------------------------
Project :a
------------------------------------------------------------

aconf
\--- abbot:abbot:1.4.0
\--- junit:junit:4.8.2

> Task :b:dependencies
Task ':b:dependencies' is not up-to-date because:
Task.upToDateWhen is false.

------------------------------------------------------------
Project :b
------------------------------------------------------------

bconf
No dependencies

最佳答案

在多项目构建中,Gradle将以给定顺序评估/配置子项目,该顺序默认为项目名称的字母顺序(我不知道是否可以更改此顺序),因此:

  • 子项目projectA将在子项目projectB
  • 之前进行评估/配置 projectA配置中的
  • 您引用的是projectB中的配置,而Gradle尚未对其进行配置,这就是为什么会出现错误(应该是:Could not get unknown property 'conf2' ...)的原因

  • 一种解决方案是在创建配置之间的依赖关系之前让Gradle配置 projectB:例如,您可以使用 afterEvaluate {} API,如下所示:

    projectA的build.gradle中:
    project(":projectB").afterEvaluate { proj ->
    configurations.conf1.extendsFrom proj.configurations.confg2

    }

    关于gradle - 从另一个Gradle项目的配置扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54830234/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com