gpt4 book ai didi

gradle - 如何读取 buildSrc 模块资源文件夹中的属性文件?

转载 作者:行者123 更新时间:2023-12-03 04:07:39 39 4
gpt4 key购买 nike

我需要读取位于 buildSrc 特殊模块的 resources 文件夹内的属性文件来创建其他项目模块可以访问的 kotlin 对象。我试着把这个属性文件放在一起

  1. 在根项目文件夹中(这种情况有时有效有时无效,所以我寻找更可靠的情况)
  2. 直接在buildSrc文件夹里面
  3. 现在尝试将“常规”资源文件夹放入 buildSrc 中,它甚至被 ide 突出显示为可识别的资源文件夹

但是在组装模块的过程中,我在 load() 行中找不到异常文件

所以 2 个问题:

  1. 属性文件的位置
  2. 如何从 buildSrc 模块中的 kotlin 中读取它。

project structure dependencies.kt

最佳答案

Gradle 有一个有点复杂的类加载层次结构,我对它的了解还不够多,无法解释幕后发生的事情。不过,我可以给你一些提示。

首先,方法 getResourcegetResourceAsStream 存在于类和类加载器中,它们的行为不同。

在类上,如果不加斜线前缀,它会查找相对于该类包的资源。使用斜杠,它查看层次结构的根。由于您不知道 Gradle 完成的已编译脚本的包,因此引用该文件的正确方法是 javaClass.getResourceAsStream("/file.properties")(注意斜杠)。

如果您改用 ClassLoader 中的方法,则前导斜杠没有意义。所以在这里,Thread.currentThread().contextClassLoader.getResource("file.properties")) 是正确的。

最后要考虑的是什么时候可以使用类中的方法,什么时候必须使用 ClassLoader。据我所知,您可以在同一项目(或插件)中使用类方法。所以这应该在 buildSrc 中工作。但是如果你想获取buildSrc之外的资源,我相信你需要通过context classloader。

关于gradle - 如何读取 buildSrc 模块资源文件夹中的属性文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63843798/

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