Gradle Java 中模块的根目录

Gradle root directory of modules in Java

这是我的 Gradle 项目的结构:

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

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

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

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

您不应依赖项目结构来访问尤其是写入文件。如果您将要部署的应用程序打包到 JAR 中,那么这些路径中的任何一个都将不再可用于写入数据,甚至在开发过程中也可能发生变化,正如您已经注意到的那样。相反,您应该使您的缓存路径可配置,例如来自配置文件 and/or 命令行参数。这允许在部署时将缓存路径配置到外部位置,并在开发期间配置到某个临时路径。

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