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









































































































































































a.報oracle驅動jar包的錯誤。因為maven去下載oracle驅動jar包無法獲取成功,所以會報此錯誤。
這個只要根據學習筆記4:http://www.aygfsteel.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并沒有獲取成功,但是在本地倉庫中,已經存在了\repository\javax\jms\jms\1.1\jms-1.1.jar 等等這些jar了。(本地倉庫的jar包存放路徑由groupId、artifactId組成)
只是這些jar包都是沒有內容的,于是我將我手動下載的這些jar包,覆蓋到了它們相應目錄下。重新進行打包,OK了,不報錯了。打包成功。
但看一下打包后的情況,根本不符合我的要求:
a.在QrtzPrj.jar的同一目錄下并沒有lib文件夾,也沒有依賴的jar包。
b.沒有config文件夾。
c.配置文件都被打在jar里面。(這是由maven默認的,它會找到src/main/resource目錄下的配置,將其打在jar中)
d.manifest文件完全不是我要求的。
不過沒關系,知道了差距,修改pom.xml文件即可。
待續....
本文為原創,歡迎轉載,轉載請注明出處BlogJava。