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

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

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

    ALL is Well!

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

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

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

    <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驅(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

    posted on 2010-09-04 10:48 李 明 閱讀(765) 評論(0)  編輯  收藏 所屬分類: Maven2
    主站蜘蛛池模板: 亚洲日韩激情无码一区| 亚洲天堂一区在线| 无码中文字幕av免费放dvd| 亚洲福利视频网址| 啊灬啊灬别停啊灬用力啊免费看| 免费看一级一级人妻片| 亚洲精品国产精品乱码视色| 国产精品成人观看视频免费| 四虎国产精品成人免费久久 | 亚洲AV无码乱码在线观看| 永久免费av无码入口国语片| 亚洲人成网国产最新在线| 国产av无码专区亚洲国产精品| 最近免费最新高清中文字幕韩国| 羞羞视频网站免费入口| 亚洲午夜免费视频| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 免费国内精品久久久久影院| 久久免费高清视频| 朝桐光亚洲专区在线中文字幕| 久久精品国产亚洲AV果冻传媒| 国产免费人人看大香伊| 91成人在线免费视频| 人人公开免费超级碰碰碰视频 | 精品亚洲成在人线AV无码| 国产亚洲AV夜间福利香蕉149| 毛片大全免费观看| 少妇太爽了在线观看免费视频| 黄色三级三级免费看| 亚洲娇小性xxxx| 亚洲AV日韩AV永久无码绿巨人| 亚洲 另类 无码 在线| 国产在线a免费观看| 高清一区二区三区免费视频| 国产亚洲精品精品精品| jiz zz在亚洲| 噜噜噜亚洲色成人网站∨| 国产亚洲无线码一区二区| 国产亚洲福利一区二区免费看| 97免费人妻无码视频| 久久免费精品视频|