gpt4 book ai didi

gradle - 如何在外部文件中定义函数?

转载 作者:行者123 更新时间:2023-12-05 00:12:44 25 4
gpt4 key购买 nike

我遇到了 gradle/groovy 的奇怪行为。

我有一个 bulid.gradle看起来像这样:

def elastic(notation, projectName) {
if (allprojects.find { it.name == projectName }) {
println "adding project dependency on project $projectName"
project(projectName)
} else {
println "adding binary dependency on project $projectName"
dependencies.create(notation)
}
}

dependencies {
elastic('my.group:myProject:1.0','myProject')
}

如果没有名为 myProject 的项目,此函数将返回一个二进制依赖项。否则它返回一个项目依赖。
但这不是重点。我在不同的项目中经常使用这个功能,而且效果很好。但是为了避免冗余代码,我试图将这个函数具体化。所以我把它放进 define_elastic_1.gradle并将该文件应用于我的 build.gradle .现在它看起来像这样:
apply from: "file://entw1/ENTWICKLUNG/GfOPGradleRepo/define_elastic_1.gradle"
dependencies{
elastic('my.group:myProject:1.0','myProject')
}

但是当我做一个 gradle build它说
Could not find method elastic() for arguments [my.group:myProject:1.0, myProject] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

你知道为什么我不能使用在单独文件中定义的函数吗?

最佳答案

尝试将函数定义为闭包并通过 extdefine_elastic_1.gradle :

ext.elastic = { notation, projectName ->
if (allprojects.find { it.name == projectName }) {
println "adding project dependency on project $projectName"
project(projectName)
} else {
println "adding binary dependency on project $projectName"
dependencies.create(notation)
}
}

关于gradle - 如何在外部文件中定义函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50016599/

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