2012-11-21 33 views
1

我想引用Java測試類中的資源文件,它是一個密鑰庫文件。該屬性通常從指向本地或遠程運行的JDK的屬性文件加載。Java - 如何從Java類引用資源文件

當Maven執行構建作爲我的部署過程的一部分時,它首先構建在構建服務器上。我想能夠在類路徑上放置密鑰庫文件,所以我不必在構建服務器上設置硬依賴關係(因此我將密鑰庫放在構建服務器上)

當我在本地連接單元測試時使用此配置可​​以正常工作,但是當我在構建服務器上執行構建時,此路徑失敗。誰能澄清爲什麼這是失敗?我能做些什麼來解決?我想我知道爲什麼,但澄清會很好。

當前配置

<bean id="httpClient" 
    class="myapp.HTTPClient"> 
    <property name="trustStoreLocation" value="..\\mywebapp\\target\\test-classes\\truststore" /> 
    <property name="trustStorePass" value="mypass" /> 
</bean> 
+3

您是否嘗試過用單正斜槓來代替?此外,似乎有點脆弱,把信託存放在'... target/test-classes ...' –

+0

謝謝你爲我工作 – cduggan

回答

0

對於資源文件,我更喜歡下面對Maven的標準目錄結構。請閱讀(http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html)以獲取更多參考。在src/test/resources和src/main/resources中放置一個類似(.cfg或.jks或.properties)的文件會自動在構建時在類路徑中使用。此外,它使您能夠隔離您的測試和主要資源文件。

例如,我的pom.xml看起來是這樣的:

<build> 
    <finalName>${project.artifactId}</finalName> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
     </resource> 
     <resource> 
      <directory>src/main/config</directory> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
     </resource> 
    </resources> 
    <testResources> 
     <testResource> 
      <directory>src/main/config</directory> 
     </testResource> 
     <testResource> 
      <directory>src/main/resources</directory> 
     </testResource> 
    </testResources> 

    <!-- Other pom.xml stuff --> 

</build> 

現在,爲了驗證一個簡單的方法,如果你的文件已複製正確的製表罐子和檢查所需的文件。

mvn build 

然後做:

jar -tf target/<your project jar>.jar | grep "<file name you want to verify>"