【问题标题】:Gradle root directory of modules in JavaJava中模块的Gradle根目录
【发布时间】:2020-01-03 07:20:12
【问题描述】:

这是我的 Gradle 项目的结构:

- Game [parent]
 |- Server [module]
    -- Cache
 |- Client [module]

当我尝试使用以下方式从服务器 java 项目访问缓存时出现问题:

new File("/cache/cacheItem.dat");

Java 现在将在父文件夹 (Game) 中查找缓存而不是服务器文件夹,我不知道如何使用 Gradle 更改服务器项目的根目录。我想知道如何将服务器的根目录更改为它自己的文件夹而不是父文件夹。

【问题讨论】:

  • 对我来说,绝对路径显然不使用父路径作为基础,我想知道是否可以将相关路径更改为服务器。

标签: java gradle directory root


【解决方案1】:

您不应该依赖您的项目结构来访问特别是编写文件。如果您将要部署的应用程序打包到 JAR 中,这些路径中的任何一个都将不再可用于写入数据,并且即使在开发过程中也可能会发生变化,正如您所注意到的。相反,您应该使缓存路径可配置,例如从配置文件和/或命令行参数。这允许缓存路径在部署时配置到外部位置,并在开发期间配置到一些临时路径。

如果您只需要对已知位置的文件进行读取访问,请将它们放在src/main/resources(或src/test/resources 用于测试)下。 Gradle 按照惯例将此目录的内容与您的代码打包在一起,其中的所有内容都将在运行时在根级别、开发期间以及部署之后可用。要在 Java 中访问类路径上的此类资源,请使用 getClass().getResource("path/to/resource")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-09
    • 2023-03-20
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 2019-01-20
    • 2021-06-29
    • 1970-01-01
    相关资源
    最近更新 更多