我在Gradle项目的构建文件(build.gradle
)中运行了以下配置:
codenarcMain {
configFile = rootProject.file("gradle/codenarc/CodeNarcMain.groovy")
}
当我Google“ Gradle rootProject ”时,我找到了this link,这使rootProject
看起来像ProjectDescriptor
个实例。
但是看ProjectDescriptor
,我没有看到任何名为file
的属性。我看到buildFile
和projectDir
,但没有file
属性。
最终,我试图让Gradle从外部构建目录加载CodeNarc配置文件。在我的系统上,我有一个名为$CODENARC_HOME
的env var,其目录结构如下:
CODENARC_HOME/ (say this is /home/myuser/tools/codenarc/)
CodeNarcMain.groovy
CodeNarcTest.groovy
README.md
现在我想在Gradle中更改CodeNarc配置,看起来像这样:
codenarcMain {
configFile = rootProject.file("CODENARC_HOME/CodeNarcMain.groovy")
}
然后,无论在哪里定义CODENARC_HOME
,Gradle构建仍然可以找到配置文件。
所以我的问题:
file
上的rootProject
属性是什么,我为什么不在API文档(上面链接)中看到它?和rootProject.file(...)
在其文件路径字符串参数中使用system / env vars?答案 0 :(得分:1)
rootProject
中的 settings.gradle
是一个ProjectDescriptor
。 rootProject
中的build.gradle
是Project
。可以使用标准Java方式访问环境变量和系统属性:
codenarcMain {
configFile = rootProject.file("${System.getenv("CODENARC_HOME")}/CodeNarcMain.groovy")
// or: System.getProperty("codenarc.home")
}