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

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

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

    ALL is Well!

    敏捷是一條很長(zhǎng)的路,摸索著前進(jìn)著

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

    接上一篇Maven2 學(xué)習(xí)筆記[5]-構(gòu)建一個(gè)Java Application項(xiàng)目。
    一個(gè)一個(gè)來(lái)處理不符合我們需求的地方。

    在我的博客 學(xué)習(xí)資源庫(kù) 鏈接里,有介紹Maven插件的,對(duì)于以下不清楚的插件用法、節(jié)點(diǎn)用法,可以去查一下,寫(xiě)的很明確,而且還有例子。
    我就是在那里一邊看用法,一邊寫(xiě)pom.xml文件。

    1.問(wèn)題:在QrtzPrj.jar的同一目錄下并沒(méi)有l(wèi)ib文件夾,也沒(méi)有依賴(lài)的jar包。
    這個(gè)問(wèn)題的解決辦法便是引入Maven的maven-dependency-plugin插件。
    內(nèi)容如下:(配置在<build> <plugins>...</pulugins></build> 中)

                <plugin>
                    
    <groupId>org.apache.maven.plugins</groupId>
                    
    <artifactId>maven-dependency-plugin</artifactId>
                    
    <executions>
                        
    <execution>
                            
    <id>copy-dependencies</id>
                            
    <phase>package</phase>
                            
    <goals>
                                
    <goal>copy-dependencies</goal>
                            
    </goals>
                            
    <configuration>
                                
    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                                
    <overWriteReleases>false</overWriteReleases>
                                
    <overWriteSnapshots>false</overWriteSnapshots>
                                
    <overWriteIfNewer>true</overWriteIfNewer>
                            
    </configuration>
                        
    </execution>
                    
    </executions>
                
    </plugin>

    保存pom.xml,再次進(jìn)行打包。嗯,不錯(cuò),lib文件夾產(chǎn)生了,所依賴(lài)的jar也都拷貝過(guò)去了。

    2.問(wèn)題:沒(méi)有config文件夾及配置文件;且配置文件被打在jar包中了。
    這個(gè)問(wèn)題與第一個(gè)問(wèn)題類(lèi)似,這次需要引入maven的maven-resources-plugin 插件。
    為了不讓配置文件打在jar中,還需要對(duì)maven-jar-plugin 進(jìn)行一些配置。
    a. maven-jar-plugin的配置內(nèi)容:(在<plugin><configuration>...</configuration></plugin>中配置)
                        <excludes>
                            
    <exclude>applicationContext.xml</exclude>
                            
    <exclude>log4j.xml</exclude>
                            
    <exclude>jdbc.properties</exclude>
                            
    <exclude>quartz.properties</exclude>
                            
    <exclude>sql-map-config.xml</exclude>
                        
    </excludes>

    b. maven-resources-plugin 插件的配置內(nèi)容如下:
                <plugin>
                    
    <groupId>org.apache.maven.plugins</groupId>
                    
    <artifactId>maven-resources-plugin</artifactId>
                    
    <version>2.3</version>
                    
    <executions>
                        
    <execution>
                            
    <id>copy-resources</id>
                            
    <phase>package</phase>
                            
    <goals>
                                
    <goal>copy-resources</goal>
                            
    </goals>
                            
    <configuration>
                                
    <encoding>UTF-8</encoding>
                                
    <outputDirectory>${project.build.directory}/config</outputDirectory>
                                
    <resources>
                                    
    <resource>
                                        
    <directory>src/main/resources</directory>
                                        
    <includes>
                                            
    <include>applicationContext.xml</include>
                                            
    <include>log4j.xml</include>
                                            
    <include>jdbc.properties</include>
                                            
    <include>quartz.properties</include>
                                            
    <include>sql-map-config.xml</include>
                                        
    </includes>
                                        
    <filtering>true</filtering>
                                    
    </resource>
                                
    </resources>
                            
    </configuration>
                        
    </execution>
                    
    </executions>
                
    </plugin>

    保存pom.xml,再進(jìn)行打包。
    lib文件夾及依賴(lài)包,config文件夾及配置文件都拷貝過(guò)去了。再打開(kāi)QrtzPrj.jar看一下,配置文件沒(méi)有被打在其中,很好。
    接下來(lái)看其他的問(wèn)題。

    3.問(wèn)題:manifest文件完全不是我要求的。
    現(xiàn)在的manifest文件內(nèi)容如下:
    Manifest-Version: 1.0
    Archiver-Version: Plexus Archiver
    Created-By: Apache Maven
    Built-By: Administrator
    Build-Jdk: 1.6.0_13
    Main-Class: com.jn.common.Main
    Class-Path: aspectjweaver-1.6.6.jar spring-2.5.5.jar commons-logging-1
     .0.4.jar ant-antlr-1.8.1.jar commons-beanutils-1.7.0.jar commons-coll
     ections-3.2.1.jar commons-dbcp-1.3.jar commons-pool-1.5.4.jar commons
     -dbutils-1.2.jar commons-io-1.4.jar commons-lang-2.4.jar commons-net-
     2.0.jar ibatis-2.3.4.726.jar jsonlib-2.3.jar jsontools-core-1.7.jar a
     ntlr-2.7.7.jar log4j-1.2.15.jar mail-1.4.jar activation-1.1.jar jms-1
     .1.jar jmxtools-1.2.1.jar jmxri-1.2.1.jar ezmorph-1.0.6.jar ojdbc-14.
     jar quartz-all-1.8.3.jar slf4j-api-1.5.10.jar slf4j-log4j12-1.5.10.jar

    1)classPath中,每個(gè)jar文件前應(yīng)限定文件夾名,即應(yīng)該加入 lib/。
    2)config文件夾并沒(méi)有被加入到classpath中。
    好,查資料,既然是打包時(shí)候manifest文件不滿足要求,當(dāng)然要看 maven-jar-plugin 插件了。繼續(xù)研究它吧。

    a.將 maven-jar-plugin 插件的<manifest>節(jié)點(diǎn)修改為:
                            <manifest>
                                
    <mainClass>com.jn.common.Main</mainClass>
                                
    <addClasspath>true</addClasspath>
                                
    <!-- 追加前綴 -->
                                
    <classpathPrefix>lib/</classpathPrefix>
                            
    </manifest>

    b.在<archive>節(jié)點(diǎn)內(nèi)增加以下內(nèi)容:
                            <manifestEntries>
                                
    <Class-Path>config/</Class-Path>
                            
    </manifestEntries>

    好,保存pom.xml,再進(jìn)行打包。
    manifest文件變成了:
    Manifest-Version: 1.0
    Archiver-Version: Plexus Archiver
    Created-By: Apache Maven
    Built-By: Administrator
    Build-Jdk: 1.6.0_13
    Main-Class: com.jn.common.Main
    Class-Path: config/ lib/aspectjweaver-1.6.6.jar lib/spring-2.5.5.jar l
     ib/commons-logging-1.0.4.jar lib/ant-antlr-1.8.1.jar lib/commons-bean
     utils-1.7.0.jar lib/commons-collections-3.2.1.jar lib/commons-dbcp-1.
     3.jar lib/commons-pool-1.5.4.jar lib/commons-dbutils-1.2.jar lib/comm
     ons-io-1.4.jar lib/commons-lang-2.4.jar lib/commons-net-2.0.jar lib/i
     batis-2.3.4.726.jar lib/jsonlib-2.3.jar lib/jsontools-core-1.7.jar li
     b/antlr-2.7.7.jar lib/log4j-1.2.15.jar lib/mail-1.4.jar lib/activatio
     n-1.1.jar lib/jms-1.1.jar lib/jmxtools-1.2.1.jar lib/jmxri-1.2.1.jar 
     lib/ezmorph-1.0.6.jar lib/ojdbc-14.jar lib/quartz-all-1.8.3.jar lib/s
     lf4j-api-1.5.10.jar lib/slf4j-log4j12-1.5.10.jar

    good!這次應(yīng)該沒(méi)問(wèn)題了。準(zhǔn)備執(zhí)行吧!

    4.執(zhí)行后報(bào)錯(cuò)
    大意就是 iBatis 找不到在 sql-map-client.xml配置的 文件路徑<sqlMap resource="com/jn/persistence/sql/sql.xml" />
    于是我到j(luò)ar包中去查找 此xml文件,果然沒(méi)有。
    這下郁悶了,又查了下資料,還得修改 maven-jar-plugin 插件的配置。
    在<configuration>節(jié)點(diǎn)下這樣配置:(bin/是編譯后輸出的路徑)
    <classesDirectory>bin/</classesDirectory>

    好,我再打包試試看。打好后,去看了一下com/jn/persistence/sql 目錄,嗯,good,sql.xml也在了。
    我想這下 java -jar QrtzPrj.jar 可以派上用場(chǎng)了吧。

    5.執(zhí)行后又報(bào)錯(cuò)
    我當(dāng)時(shí)已經(jīng)快崩潰了。報(bào)的錯(cuò)誤大意是 無(wú)法用 http://maven.apache.org  連接到數(shù)據(jù)庫(kù)。
    嗯,很熟悉的url,它就配置在我們的pom.xml中<project>節(jié)點(diǎn)內(nèi):
    <url>http://maven.apache.org</url>

    大概知道了原因,jdbc.properties文件 和 applicationContext.xml文件有placeholder的操作。
    好吧,我把jdbc.properties里配置的 url=jdbc:oracle:thin:@localhost:1521:root 修改一下,把url改成dburl,相應(yīng)的 applicationContext.xml 里也改一下。
    (也許這里可以不向maven妥協(xié),希望高人能指點(diǎn)一下,可以讓maven打包時(shí)不做這樣的替換。)
    再執(zhí)行,終于OK了。
    我感嘆:maven 打包做的事情還真多啊!!

    最后附上我的pom.xml文件:
    <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包的名稱(chēng) -->
            
    <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-dependency-plugin</artifactId>
                    
    <executions>
                        
    <execution>
                            
    <id>copy-dependencies</id>
                            
    <phase>package</phase>
                            
    <goals>
                                
    <goal>copy-dependencies</goal>
                            
    </goals>
                            
    <configuration>
                                
    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                                
    <overWriteReleases>false</overWriteReleases>
                                
    <overWriteSnapshots>false</overWriteSnapshots>
                                
    <overWriteIfNewer>true</overWriteIfNewer>
                            
    </configuration>
                        
    </execution>
                    
    </executions>
                
    </plugin>
                
    <plugin>
                    
    <groupId>org.apache.maven.plugins</groupId>
                    
    <artifactId>maven-resources-plugin</artifactId>
                    
    <version>2.3</version>
                    
    <executions>
                        
    <execution>
                            
    <id>copy-resources</id>
                            
    <phase>package</phase>
                            
    <goals>
                                
    <goal>copy-resources</goal>
                            
    </goals>
                            
    <configuration>
                                
    <encoding>UTF-8</encoding>
                                
    <outputDirectory>${project.build.directory}/config</outputDirectory>
                                
    <resources>
                                    
    <resource>
                                        
    <directory>src/main/resources</directory>
                                        
    <includes>
                                            
    <include>applicationContext.xml</include>
                                            
    <include>log4j.xml</include>
                                            
    <include>jdbc.properties</include>
                                            
    <include>quartz.properties</include>
                                            
    <include>sql-map-config.xml</include>
                                        
    </includes>
                                        
    <filtering>true</filtering>
                                    
    </resource>
                                
    </resources>
                            
    </configuration>
                        
    </execution>
                    
    </executions>
                
    </plugin>
                
    <plugin>
                    
    <groupId>org.apache.maven.plugins</groupId>
                    
    <artifactId>maven-jar-plugin</artifactId>
                    
    <goals>
                        
    <goal>jar</goal>
                    
    </goals>
                    
    <configuration>
                        
    <classesDirectory>bin/</classesDirectory>
                        
    <archive>
                            
    <manifest>
                                
    <mainClass>com.jn.common.Main</mainClass>
                                
    <addClasspath>true</addClasspath>
                                
    <!-- 追加前綴 -->
                                
    <classpathPrefix>lib/</classpathPrefix>
                            
    </manifest>
                            
    <manifestEntries>
                                
    <Class-Path>config/</Class-Path>
                            
    </manifestEntries>
                        
    </archive>
                        
    <excludes>
                            
    <exclude>applicationContext.xml</exclude>
                            
    <exclude>log4j.xml</exclude>
                            
    <exclude>jdbc.properties</exclude>
                            
    <exclude>quartz.properties</exclude>
                            
    <exclude>sql-map-config.xml</exclude>
                        
    </excludes>
                    
    </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>


    本文為原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處BlogJava
    posted on 2010-09-04 11:37 李 明 閱讀(1765) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Maven2
    主站蜘蛛池模板: 24小时免费直播在线观看| 国产片AV片永久免费观看| 日韩av无码免费播放| 暖暖免费在线中文日本| 亚洲最大免费视频网| 国内一级一级毛片a免费| 免费成人av电影| 久久亚洲精品国产精品黑人| 亚洲精品视频在线免费| 亚洲国产av玩弄放荡人妇| 亚州**色毛片免费观看| 蜜桃视频在线观看免费视频网站WWW| 美女被免费喷白浆视频| 亚洲成人影院在线观看| 亚洲小视频在线观看| 亚洲国产区男人本色| 免费看成人AA片无码视频吃奶| 国产免费不卡视频| 免费人成在线观看网站视频 | 亚洲精品成a人在线观看| 亚洲成AV人片天堂网无码| 亚洲不卡影院午夜在线观看| 免费大片av手机看片| 18禁美女裸体免费网站| 免费va人成视频网站全| 亚洲黄色在线观看视频| 美女被爆羞羞网站免费| 91精品国产免费入口| 可以免费观看一级毛片黄a| 无码乱人伦一区二区亚洲| 亚洲av无码有乱码在线观看| 男人j进入女人j内部免费网站| 免费观看男人免费桶女人视频| 亚洲AV无码一区东京热| 国产AV无码专区亚洲AV琪琪| 91精品视频在线免费观看| 中文字幕精品无码亚洲字| 亚洲中文字幕一区精品自拍| 国产猛男猛女超爽免费视频| 国产免费啪嗒啪嗒视频看看 | 亚洲精品无码永久在线观看|