在Java Gradle项目中设置资源文件夹

16

我正在尝试建立一个Gradle Java项目,但出于某些原因,似乎无法将资源文件夹注册到构建中。每当我尝试写入文件时,它都会写入项目根目录而不是资源文件夹。

我的项目目录如下:

  • src
    • main
      • java
      • resources

这是我的build.gradle文件:

apply plugin: 'java'
apply plugin: 'application'

repositories {
        mavenCentral()
}

mainClassName='Test'


sourceSets {
        main {
                java {
                        srcDirs= ["src/main/java"]
                }
                resources {
                        srcDirs= ["src/main/resources"]
                }
        }
}

这里是我的Test.java,我正在使用它来查看是否能够访问资源文件夹。

import java.io.*;

public class Test {

        public static void main(String[] args) throws Exception {

                FileWriter writer = new FileWriter(new File("Test.txt"));
                writer.write("Test");
                writer.close();

        }

}

一种奇怪的检查访问方式。将 "1.txt" 文件放入资源文件夹中,然后尝试调用 Test.class.getResourceAsStream("/1.txt") 来查看是否成功。 - AdamSkywalker
1个回答

7

你可以通过系统属性 user.dir 来获取当前目录。例如:System.getProperty("user.dir")

资源目录与工作目录不同,工作目录是应用程序执行的目录。资源目录主要用于存储在运行时之前创建的文件,以便在运行时访问。它不适合在运行时写入。因此,当您在 Gradle 中设置资源路径时,它不会将当前工作目录设置为资源路径。

你仍然可以做你想做的事情,但你需要写到 ./src/main/resources/Test.txt。我知道有时在开发应用程序时,你想能够写入资源文件夹。但请注意,当应用程序在实际环境中运行时,通常不会写入资源文件夹,尤其是它经常位于 JAR 文件中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接