<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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.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并沒有獲取成功,但是在本地倉庫中,已經存在了\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 李 明 閱讀(770) 評論(0)  編輯  收藏 所屬分類: Maven2
    主站蜘蛛池模板: 国产自偷亚洲精品页65页| 四虎最新永久免费视频| 一级黄色免费大片| 污视频网站免费观看| 国产精品亚洲а∨无码播放麻豆 | 国产卡一卡二卡三免费入口 | 色婷婷亚洲一区二区三区| 亚洲欧好州第一的日产suv| 亚洲精品天堂无码中文字幕| 亚洲日韩亚洲另类激情文学| 亚洲码欧美码一区二区三区| 亚洲国产AV一区二区三区四区| 亚洲av日韩综合一区久热| 精品国产亚洲第一区二区三区| 亚洲人成人无码.www石榴| 亚洲av片在线观看| 特级毛片A级毛片免费播放| 一级**爱片免费视频| 中文字幕一区二区免费| 无码人妻AV免费一区二区三区| 在线免费中文字幕| 最新欧洲大片免费在线| 成在线人永久免费视频播放| 国产成人免费手机在线观看视频| www.91亚洲| 亚洲国产精品无码一线岛国| 18gay台湾男同亚洲男同| 国产成人精品日本亚洲专| 日韩欧美亚洲国产精品字幕久久久 | 亚洲精品免费网站| 麻豆精品国产免费观看| 亚洲国产精品无码久久九九| 久久亚洲国产午夜精品理论片| 亚洲高清无在码在线无弹窗| 亚洲成a人无码亚洲成av无码| 一级特黄a免费大片| 久久青草国产免费观看| 成熟女人特级毛片www免费| 亚洲精品无码av天堂| 蜜芽亚洲av无码精品色午夜| 亚洲乱码av中文一区二区|