簡體   English   中英

Java資源-在目錄樹中遠距離使用文件

[英]Java resources - Use file far off in directory tree

我有一個新手Java問題。

對於我們在SQL Server中使用的某些存儲過程,我必須進行J / DBUnit測試套件。 這些測試在我最初放置在與Java項目相同的目錄中的幾個子目錄中使用了一些XML文件。

無論如何,在檢入這些測試后,我們的SVN管理器希望將.java文件保留在樹的一部分中,而將資源(如XML文件和所需的JAR)保留在樹的另一部分中。

因此,我的測試最初使用相對路徑引用了XML文件,該路徑現在不起作用。

我的問題是:

  1. 我可以將帶有XML文件的目錄與CLASSPATH一起使用嗎(我希望如此)。
  2. 假設可行,我如何在我的代碼中引用以這種方式包含的文件?
  3. 如果我不應該為此使用CLASSPATH,則可以使用其他解決方案。

忘記calsspath。 為您的測試提供一個參數/配置,該參數/配置定義XML文件相對路徑的根目錄。

使用classpath沒問題,標准的maven項目布局如下所示:

  • src
    • 主要
      • 爪哇
      • 資源
    • 測試
      • 爪哇
      • 資源
  • 目標
    • 測試班

編譯器將src / main / java編譯為target / class,將src / main / resources的資源復制到target / classes文件夾,與測試類似。 如果測試的類路徑包含類和測試類,則一切正常。

您的項目布局如何,如何構建?

不,由於Java使用了CLASSPATH,因此您不應在該實例中使用它。 但是,可以通過從環境變量或配置文件中加載一個值來使用類似的方法,該值指示XML文件的存儲目錄。

您可以執行此操作,而無需對類路徑進行任何更改。 想法是將資源文件存儲在單獨的目錄中,但是在運行構建過程時將它們復制到類路徑中的目錄中。

這是一個示例配置:

source Directory is ${basedir}/src/main/java

resource directory is ${basedir}/src/main/resources

在構建腳本中,將.java文件和資源文件( .xml) 復制到類路徑中的目錄中,例如:

${basedir}/target/classes

您的測試代碼針對目標目錄運行。 目標目錄未簽入SVN,這使您的SVN管理員滿意,並且您不必更改代碼。

暫無
暫無

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

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