接上一篇Maven2 學習筆記[5]-構建一個Java Application項目。
一個一個來處理不符合我們需求的地方。
在我的博客 學習資源庫 鏈接里,有介紹Maven插件的,對于以下不清楚的插件用法、節點用法,可以去查一下,寫的很明確,而且還有例子。
我就是在那里一邊看用法,一邊寫pom.xml文件。
1.問題:在QrtzPrj.jar的同一目錄下并沒有lib文件夾,也沒有依賴的jar包。
這個問題的解決辦法便是引入Maven的maven-dependency-plugin插件。
內容如下:(配置在<build> <plugins>...</pulugins></build> 中)



















保存pom.xml,再次進行打包。嗯,不錯,lib文件夾產生了,所依賴的jar也都拷貝過去了。
2.問題:沒有config文件夾及配置文件;且配置文件被打在jar包中了。
這個問題與第一個問題類似,這次需要引入maven的maven-resources-plugin 插件。
為了不讓配置文件打在jar中,還需要對maven-jar-plugin 進行一些配置。
a. maven-jar-plugin的配置內容:(在<plugin><configuration>...</configuration></plugin>中配置)







b. maven-resources-plugin 插件的配置內容如下:































保存pom.xml,再進行打包。
lib文件夾及依賴包,config文件夾及配置文件都拷貝過去了。再打開QrtzPrj.jar看一下,配置文件沒有被打在其中,很好。
接下來看其他的問題。
3.問題:manifest文件完全不是我要求的。
現在的manifest文件內容如下:
















2)config文件夾并沒有被加入到classpath中。
好,查資料,既然是打包時候manifest文件不滿足要求,當然要看 maven-jar-plugin 插件了。繼續研究它吧。
a.將 maven-jar-plugin 插件的<manifest>節點修改為:






b.在<archive>節點內增加以下內容:



好,保存pom.xml,再進行打包。
manifest文件變成了:


















4.執行后報錯
大意就是 iBatis 找不到在 sql-map-client.xml配置的 文件路徑<sqlMap resource="com/jn/persistence/sql/sql.xml" />
于是我到jar包中去查找 此xml文件,果然沒有。
這下郁悶了,又查了下資料,還得修改 maven-jar-plugin 插件的配置。
在<configuration>節點下這樣配置:(bin/是編譯后輸出的路徑)

好,我再打包試試看。打好后,去看了一下com/jn/persistence/sql 目錄,嗯,good,sql.xml也在了。
我想這下 java -jar QrtzPrj.jar 可以派上用場了吧。
5.執行后又報錯
我當時已經快崩潰了。報的錯誤大意是 無法用 http://maven.apache.org 連接到數據庫。
嗯,很熟悉的url,它就配置在我們的pom.xml中<project>節點內:

大概知道了原因,jdbc.properties文件 和 applicationContext.xml文件有placeholder的操作。
好吧,我把jdbc.properties里配置的 url=jdbc:oracle:thin:@localhost:1521:root 修改一下,把url改成dburl,相應的 applicationContext.xml 里也改一下。
(也許這里可以不向maven妥協,希望高人能指點一下,可以讓maven打包時不做這樣的替換。)
再執行,終于OK了。
我感嘆:maven 打包做的事情還真多啊!!
最后附上我的pom.xml文件:








































































































































































































































本文為原創,歡迎轉載,轉載請注明出處BlogJava。