ALL is Well!

          敏捷是一條很長的路,摸索著前進著

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            30 隨筆 :: 23 文章 :: 71 評論 :: 0 Trackbacks

          這個 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:

          <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
              
          <modelVersion>4.0.0</modelVersion>
              
          <groupId>com.jn</groupId>
              
          <artifactId>QrtzPrj</artifactId>
              
          <version>1.0</version>
              
          <packaging>jar</packaging>
              
          <name>QrtzPrj</name>
              
          <url>http://maven.apache.org</url>
              
          <properties>
                  
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              
          </properties>
              
          <build>
                  
          <!-- 指定生成jar包的名稱 -->
                  
          <finalName>QrtzPrj</finalName>
                  
          <plugins>
                      
          <plugin>
                          
          <groupId>org.apache.maven.plugins</groupId>
                          
          <artifactId>maven-compiler-plugin</artifactId>
                          
          <configuration>
                              
          <source>1.6</source>
                              
          <target>1.6</target>
                          
          </configuration>
                      
          </plugin>
                      
          <plugin>
                          
          <groupId>org.apache.maven.plugins</groupId>
                          
          <artifactId>maven-jar-plugin</artifactId>
                          
          <goals>
                              
          <goal>jar</goal>
                          
          </goals>
                          
          <configuration>
                              
          <archive>
                                  
          <manifest>
                                      
          <mainClass>com.jn.common.Main</mainClass>
                                      
          <addClasspath>true</addClasspath>
                                  
          </manifest>
                              
          </archive>
                          
          </configuration>
                      
          </plugin>
                      
          <plugin>
                          
          <groupId>org.apache.maven.plugins</groupId>
                          
          <artifactId>maven-surefire-plugin</artifactId>
                          
          <configuration>
                              
          <testFailureIgnore>true</testFailureIgnore>
                          
          </configuration>
                      
          </plugin>
                      
          <plugin>
                          
          <artifactId>maven-assembly-plugin</artifactId>
                          
          <configuration>
                              
          <descriptorRefs>
                                  
          <descriptorRef>jar-with-dependencies</descriptorRef>
                              
          </descriptorRefs>
                          
          </configuration>
                      
          </plugin>
                  
          </plugins>
                  
          <resources>
                      
          <resource>
                          
          <directory>src/main/resources</directory>
                      
          </resource>
                  
          </resources>
              
          </build>
              
          <dependencies>
                  
          <dependency>
                      
          <groupId>org.aspectj</groupId>
                      
          <artifactId>aspectjweaver</artifactId>
                      
          <version>1.6.6</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>org.springframework</groupId>
                      
          <artifactId>spring</artifactId>
                      
          <version>2.5.5</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>org.apache.ant</groupId>
                      
          <artifactId>ant-antlr</artifactId>
                      
          <version>1.8.1</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>commons-beanutils</groupId>
                      
          <artifactId>commons-beanutils</artifactId>
                      
          <version>1.7.0</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>commons-collections</groupId>
                      
          <artifactId>commons-collections</artifactId>
                      
          <version>3.2.1</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>commons-dbcp</groupId>
                      
          <artifactId>commons-dbcp</artifactId>
                      
          <version>1.3</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>commons-dbutils</groupId>
                      
          <artifactId>commons-dbutils</artifactId>
                      
          <version>1.2</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>commons-io</groupId>
                      
          <artifactId>commons-io</artifactId>
                      
          <version>1.4</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>commons-lang</groupId>
                      
          <artifactId>commons-lang</artifactId>
                      
          <version>2.4</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>commons-logging</groupId>
                      
          <artifactId>commons-logging</artifactId>
                      
          <version>1.0.4</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>commons-net</groupId>
                      
          <artifactId>commons-net</artifactId>
                      
          <version>2.0</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>commons-pool</groupId>
                      
          <artifactId>commons-pool</artifactId>
                      
          <version>1.5.4</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>ibatis</groupId>
                      
          <artifactId>ibatis</artifactId>
                      
          <version>2.3.4.726</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>jsonlib</groupId>
                      
          <artifactId>jsonlib</artifactId>
                      
          <version>2.3</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>com.sdicons.jsontools</groupId>
                      
          <artifactId>jsontools-core</artifactId>
                      
          <version>1.7</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>log4j</groupId>
                      
          <artifactId>log4j</artifactId>
                      
          <version>1.2.15</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>net.sf.ezmorph</groupId>
                      
          <artifactId>ezmorph</artifactId>
                      
          <version>1.0.6</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>ojdbc</groupId>
                      
          <artifactId>ojdbc</artifactId>
                      
          <version>14</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>org.quartz-scheduler</groupId>
                      
          <artifactId>quartz-all</artifactId>
                      
          <version>1.8.3</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>org.slf4j</groupId>
                      
          <artifactId>slf4j-api</artifactId>
                      
          <version>1.5.10</version>
                  
          </dependency>
                  
          <dependency>
                      
          <groupId>org.slf4j</groupId>
                      
          <artifactId>slf4j-log4j12</artifactId>
                      
          <version>1.5.10</version>
                  
          </dependency>
              
          </dependencies>
          </project>

          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

          posted on 2010-09-04 10:48 李 明 閱讀(765) 評論(0)  編輯  收藏 所屬分類: Maven2
          主站蜘蛛池模板: 赤壁市| 泰顺县| 堆龙德庆县| 岐山县| 通化市| 谷城县| 华阴市| 渭南市| 大理市| 赫章县| 连平县| 横山县| 资中县| 汕头市| 北流市| 嵩明县| 桐乡市| 呼图壁县| 前郭尔| 德江县| 英超| 综艺| 光泽县| 五峰| 武汉市| 驻马店市| 达日县| 扎鲁特旗| 仙游县| 肇庆市| 巍山| 广饶县| 嘉峪关市| 霍州市| 河津市| 邳州市| 建平县| 全南县| 调兵山市| 清苑县| 天气|