使用路径别名指向文件夹会导致 Gradle 错误

Posted

技术标签:

【中文标题】使用路径别名指向文件夹会导致 Gradle 错误【英文标题】:Using a path alias to point to a folder results in a Gradle error 【发布时间】:2020-12-17 19:05:22 【问题描述】:

为了指向我们构建工件在 Jenkins 节点上的位置,我们有以下 gradle 代码:

def apks = file("$WORKSPACE/app/build/outputs/build-apks.tar.gz")

artifacts 
    archives apks

当我使用如下所示的完整路径时,gradle 构建良好。

def apks = file("/var/jenkins/workspace/ui_manager_nexusDeploy/app/build/outputs/build-apks.tar.gz")

当我们使用 $WORKSPACE 时,我得到了

无法为“org.gradle.api”.Project 类型的项目“:app”获取未知属性“WORKSPACE”。路径

理想情况下,我想使用指针而不是硬编码路径。在这个参考文档中,你可以看到 Gradle 使用 $buildDir 就好了。https://docs.gradle.org/current/userguide/working_with_files.html

【问题讨论】:

$WORKSPACE 定义在哪里? 在服务器上。当我运行“echo $WORKSPACE”时,我会打印出路径。我在同一台机器上运行 Gradle 构建。 所以WORKSPACE 是一个环境变量。您不能直接访问 Gradle 中的环境变量,只能访问 Gradle 构建脚本中定义的属性或变量。使用 def WORKSPACE = System.getenv("WORKSPACE") 将环境变量加载到 Gradle 中。然后你可以在你的字符串中使用它。 【参考方案1】:

您可以尝试通过“$System.env.WORKSPACE”访问工作区变量吗? 例如:

def apks = file("$System.env.WORKSPACE"+"/app/build/outputs/build-apks.tar.gz")

【讨论】:

以上是关于使用路径别名指向文件夹会导致 Gradle 错误的主要内容,如果未能解决你的问题,请参考以下文章

设置gradle默认缓存文件路径-(笔记)

使用别名的流量转移

cordova打包项目下载gradle失败

类型别名,auto,decltype

为什么这个取消引用别名内存区域的C程序会导致分段错误?

AndroidStudio 2.2 构建 gradle 错误(自定义 proguard 文件的路径)