在Java項目中不只是jav文件,經常會有許多資源文件,如屬性文件,圖片資源什么的,如何把它們也一起加載到Maven工程中去呢?這個問題不難,利用resource就可以達到這個目的.因為${basedir}/src/main/resources都會編譯到jar文件中,而且該目錄下的內容將直接位于jar文件的頂部.
下圖是在前面已經用到過的程序Source Comparer程序,唯一不同的是它的Browse按鈕是圖片式的.

具體實現的代碼是這樣的:
String location="/compare.GIF";
URL imageUrl=BrowsePanel.class.getResource(location);
browseBtn = new JButton(new ImageIcon(imageUrl));
從上面的代碼可以看出,程序是從類的根路徑取得了圖片資源compare.GIF,再賦給按鈕browseBtn.所以Maven工程中也應該是一樣的處理方式.現在的問題是如何把圖片資源compare.GIF加載到jar文件中去.
Maven為此提供了一個方法,那就是在MavenResource\src\main下建立一個名為resources的目錄,再把圖片資源文件compare.GIF拷貝到里面,具體結構如下圖:

執行mvn package后,用解壓工具如WinRar打開MavenResource-1.0-SNAPSHOT.jar,可以發現圖片compare.GIF已經被打進去了.

如果打開cmd窗口,進入target目錄,執行命令:
java -cp MavenResource-1.0-SNAPSHOT.jar com.citigroup.junglesong.Inlet

執行的結果和在Eclipse中效果一致,這里就不再貼出了.
上面說的是程序執行時使用資源的情況,如果是測試代碼需要使用資源的話,可以${basedir}/src/test下新建一個resources目錄,將資源放入其中,測試代碼可以使用這樣的方式使用資源:
InputStream is = getClass().getResourceAsStream( "/test.properties" );
可見測試代碼加載資源和主體代碼加載資源是很相似的.
通過對pom文件中build 節點的修改,Maven還可以進行資源過濾,因為目前一時用不到暫時擱置一下,有興趣或需要的人可以到
http://maven.apache.org/guides/getting-started/index.html#How%20do%20I%20filter%20resource%20files? 去看看.
本文例子下載:
http://www.tkk7.com/Files/sitinspring/MavenResource20070620211407.zip