簡體   English   中英

使用 src/test/resources 作為 gradle java 的目錄

[英]Use src/test/resources as directory with gradle java

我有兩個包含 java 代碼和資源的工作目錄,一個用於測試,另一個用於生產。

源代碼/主/Java
源代碼/主要/資源

源代碼/測試/Java
源代碼/測試/資源

當運行我的代碼並從 FileInputStream 讀取文件時,如下所示:

new FileInputStream("./someFile.json");

只要文件位於項目的根目錄中,就可以正常工作。 如果我在資源文件夾中有文件並像這樣直接指向它,它也可以工作:

new FileInputStream("src/test/resources/someFile.json");

有沒有辦法將 gradle 中的 src/test/resources 聲明為 FileInputStream 查找資源的主文件夾?

如果我把我的文件像這樣它工作正常。

在此處輸入圖片說明

但是當我像這樣將文件放在 src/test/java/resources 中時

在此處輸入圖片說明

我收到一個 fileNotFoundException。

我需要一種方法來添加此目錄以使用 gradle 進行掃描。



將此添加到 build.gradle 仍然會引發 fileNotFoundException。

sourceSets {
test {
    java {
        srcDirs = ['src/test/java']
    }
    resources {
        srcDirs = ['src/test/resources']
        }
    }
}

如果你使用java或者,因為你似乎正在構建一個命令行應用程序, application插件,一切都會為你設置開箱即用:

plugins {
    id 'application'
}

您可以刪除所有sourceSet配置,然后像這樣加載文件:

new FileInputStream("/someFile.json");

(請注意,我寫的是/而不是./這將含義從“查看當前目錄,項目根目錄”更改為“查看類路徑資源的根目錄”。)
最好遵循 Slaw 在問題下的評論並通過Class#getResourceAsStream(String)定位文件 - 但這有點超出了您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM