Java中模块的Gradle根目录

Java中模块的Gradle根目录,java,gradle,directory,root,Java,Gradle,Directory,Root,这是我的Gradle项目的结构: - Game [parent] |- Server [module] -- Cache |- Client [module] 当我尝试使用以下方法从服务器java项目访问缓存时,会出现问题: new File("/cache/cacheItem.dat"); Java现在将在父文件夹游戏中查找缓存,而不是服务器文件夹,我不知道如何使用Gradle更改服务器项目的根目录。我想知道如何将服务器的根目录更改为其自己的文件夹,而不是父文件夹。您不应该依赖

这是我的Gradle项目的结构:

- Game [parent]
 |- Server [module]
    -- Cache
 |- Client [module]
当我尝试使用以下方法从服务器java项目访问缓存时,会出现问题:

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

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

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


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

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