這個 Java App 項目,包含的東西還是蠻多的。
在我構(gòu)建這個項目的過程中遇到了很多問題,讓我著實的痛苦了一天,在這一天中,我在網(wǎng)上看到很多構(gòu)建類似項目的文章,但寫的都不是很詳細。至少不能滿足我的需求。
對于像我這樣,需要在1天內(nèi)就要搞定打包的人來講,這確實很失望。
所以我要把我構(gòu)建這個項目的過程,記錄下來,希望能對 與我有類似需求的人 有一些幫助。
里面的一些配置也許不夠完美,還請指正。謝謝。
1.我的需求
我要構(gòu)建一個項目,打好jar包后,我希望的是:
a.執(zhí)行命令 java -jar QrtzPrj.jar 便可執(zhí)行。(即要在manifest文件中指定main函數(shù);PS:我打包的名字為QrtzPrj.jar)
b.在生成好的jar包同一目錄下,有l(wèi)ib文件夾,此文件夾下放置此項目所依賴的所有jar包。
c.在生成好的jar包同一目錄下,有config文件夾,此文件夾放置此項目的配置文件。包含以下文件:
applicationContext.xml、jdbc.properties、log4j.xml、quartz.properties、sql-map-config.xml;
并且要將config文件夾也加入到classpath中。(在MyEclipse中開發(fā)時,便將這些文件加入到classpath中)
d.配置文件不能打入到QrtzPrj.jar中,因為當此程序發(fā)布后,如要修改配置信息,如數(shù)據(jù)庫的連接信息等,可直接停止程序,修改配置文件,再啟動程序便可,省去了重新打包的過程。
e.要打包的代碼中,包含了xml文件。(此xml文件用于配置iBatis執(zhí)行的SQL語句)
2.項目結(jié)構(gòu)目錄
src/main/java 下面便是代碼,包為 com.jn.***其他省略。
其中在com.jn.persistence.sql目錄下,有文件 sql.xml,這里配置了iBatis要執(zhí)行的SQL語句。
3.打包錯誤1
當我的項目都開發(fā)好后,開始進行打包。
我的操作方法是,拿一個基礎(chǔ)的pom.xml文件進行修改。修改后的pom文件如下:
清單1:









































































































































































a.報oracle驅(qū)動jar包的錯誤。因為maven去下載oracle驅(qū)動jar包無法獲取成功,所以會報此錯誤。
這個只要根據(jù)學習筆記4:http://m.tkk7.com/jnbzwm/archive/2010/09/03/330879.html 搭建自己的私服,然后下載jar,自己上傳便可以解決。
b.報以下3個包的錯誤:
com.sun.jdmk:jmxtools:jar:1.2.1
com .sun .jmx:jmxri:jar:1.2.1
javax.jms:jms:jar:1.1
看了maven的錯誤提示,大概了解了,是因為引入了高版本的log4j的包(1.2.15的包會依賴,1.2.14及以前的不會),依賴了以上這些包,而這3個jar包maven下載獲取又沒成功。于是我還是按照老辦法,自己去下載,并上傳至本地私服,修改了groupId、artifactId、version后,再進行 mvn package。
居然還是報錯。后來分析了一下,原來是這樣:
這3個包因為需要一些認證,maven并沒有獲取成功,但是在本地倉庫中,已經(jīng)存在了\repository\javax\jms\jms\1.1\jms-1.1.jar 等等這些jar了。(本地倉庫的jar包存放路徑由groupId、artifactId組成)
只是這些jar包都是沒有內(nèi)容的,于是我將我手動下載的這些jar包,覆蓋到了它們相應目錄下。重新進行打包,OK了,不報錯了。打包成功。
但看一下打包后的情況,根本不符合我的要求:
a.在QrtzPrj.jar的同一目錄下并沒有l(wèi)ib文件夾,也沒有依賴的jar包。
b.沒有config文件夾。
c.配置文件都被打在jar里面。(這是由maven默認的,它會找到src/main/resource目錄下的配置,將其打在jar中)
d.manifest文件完全不是我要求的。
不過沒關(guān)系,知道了差距,修改pom.xml文件即可。
待續(xù)....
本文為原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處BlogJava。