Java Travis CI和带有Gradle的JUnit找不到类路径资源

Java Travis CI和带有Gradle的JUnit找不到类路径资源,java,gradle,junit,classpath,travis-ci,Java,Gradle,Junit,Classpath,Travis Ci,我有一个项目,其完整的源代码可以在feat/config分支的GitHub页面上找到。我遇到的问题是ClassName.class.getClassLoader().getResourceAsStream()总是返回null,创建一个包含完整路径(包括源目录)的文件也会返回FileNotFoundException 此代码应该从类路径资源中加载默认配置值,并将其写入文件。它在本地工作,但在Travis CI上失败 public static void writeDefault(String re

我有一个项目,其完整的源代码可以在
feat/config
分支的GitHub页面上找到。我遇到的问题是
ClassName.class.getClassLoader().getResourceAsStream()
总是返回
null
,创建一个包含完整路径(包括源目录)的
文件也会返回
FileNotFoundException

此代码应该从类路径资源中加载默认配置值,并将其写入
文件
。它在本地工作,但在Travis CI上失败

public static void writeDefault(String res, File out) throws IOException {
    if (!out.exists()) {
        out.getParentFile().mkdirs();
        out.createNewFile();
    }
    OutputStream stream = new FileOutputStream(out);
    InputStream in = FileConfig.class.getClassLoader().getResourceAsStream(res);
    if (in == null) {
        stream.close();
        throw new FileNotFoundException(res);
    }
    IOUtils.copy(in, stream);
    stream.close();
}

@Test
public void testFileConfig() throws IOException {
    System.out.println("Creating default config file");
    File testConfigFile = new File("configs/test.txt");
    if (!testConfigFile.exists())
        FileConfig.writeDefault("configs/test.txt", testConfigFile);
    System.out.println("Loading config file");
    Config testConfig = FileConfig.loadConfig(testConfigFile);
    System.out.println("Loaded value: " + testConfig.getValue("value-1"));
    System.out.println("Deleting config file");
    testConfigFile.deleteOnExit();
}
上述测试失败,堆栈跟踪如下:

jtrial.config.TestConfig > testFileConfig STANDARD_OUT
    Creating default config file
jtrial.config.TestConfig > testFileConfig FAILED
    java.io.FileNotFoundException: configs/test.txt
        at jtrial.config.FileConfig.writeDefault(FileConfig.java:111)
        at jtrial.config.TestConfig.testFileConfig(TestConfig.java:24)
.travis.yml
配置文件:

language: java
jdk:
  - oraclejdk8
notifications:
  email: false
install:
  - chmod +x ./gradlew
  - ./gradlew --info assemble
script: ./gradlew --info check

我认为你的问题是由这个Gradle问题引起的:。

嗯。。。准备好畏缩和面对手掌


我刚刚意识到。。。那个我在
.gitignore
文件上配置了
configs/
。这不仅忽略了根项目目录中的
configs/
目录,还忽略了
configs/
的每个实例。我只是将其替换为
/configs/
,然后实际将文本文件添加到新提交中*我犯了一个愚蠢的错误,看到我的答案了吗