2013-10-07 127 views
5

我覺得我正在圍繞這個進行循環,所以希望它的某些東西相對容易解決。使用Maven(和Eclipse)管理Jar文件外部的資源

對於我正在開發的應用程序,我想擁有一組包含配置信息的XML文件。我希望這些可以編輯而不必重新編譯jar文件。所以我想將它們放在與jar文件相同的文件夾中的資源文件夾中。 所以我打算結構是一樣的東西

root 
| 
- app.jar 
| 
- resources 
    | 
    - config 
    | 
    - config1.xml 
    - config2.xml 

我已成功地調整我的pom.xml,使其將資源複製到maven-resource-plugin內使用copy-resources我的目標文件夾。

我還添加了我的資源目錄中的資源(使其作品日食內)使用

<resources> 
    <resource> 
     <directory>resources</directory> 
    </resource> 
</resources> 

,這樣我可以使用

getClass().getResource("/config/xml/config1.xml");

訪問他們,包括我的資源目錄在jar的清單(我認爲)使用maven-jar-plugin中的manifestEntries的類路徑上。

<manifestEntries> 
    <Class-Path>. resources</Class-Path&> 
</manifestEntries> 

,並試圖從被編譯成使用

<configuration> 
    <exclude>resources/**/*.xml</exclude> 
</configuration> 

他們仍然得到編譯成jar文件的jar文件排除我的資源。如果我手動將它們從jar文件中刪除,那麼在嘗試訪問資源時會出現空指針異常。

所以我想要實現的,需要幫助搞清楚的是 這是一種獲得我已經粗略地概述的外部資源結構的方法,這些外部資源沒有被編譯到jar文件中但是可以訪問(通過類路徑)通過代碼在同一個根目錄下的一個jar中,並且仍然在eclipse中運行。

任何幫助或指導,將不勝感激。

+0

只是所有的XML文件,你是怎麼解決這個問題? – Isaac

+0

唉,我還沒有設法。它的個人項目略有下降,因此目前所有的配置都整合到了jar文件中。可能在某個時候再次看到它,但我還沒有弄清楚它 – Ruanae

回答

0

你已經錯過了標籤excludes

<configuration> 
    <excludes> 
     <exclude>resources/**/*.xml</exclude> 
    </excludes> 
</configuration> 
+0

嗨 謝謝你,這是我沒有注意到的東西。 我確實在我的pom中添加了「」,但我仍然擁有包含在jar文件中的資源。 我現在在工作,但今天晚上會嘗試發佈完整的pom,以防發生明顯錯誤 – Ruanae

0

可以複雜排除這樣的所有文件夾:

<excludes> 
     <exclude>config/</exclude> 
</excludes> 

或從配置

<excludes> 
    <exclude>**/config/*.xml</exclude> 
</excludes> 
相關問題