日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maven2之旅

發(fā)布時間:2024/4/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven2之旅 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://www.blogjava.net/sitinspring/category/23515.html

我的Maven2之旅:一.前言,準備及安裝.

自從Java誕生以來,打包,測試,代碼檢測和發(fā)布Java工程就成為困擾Java程序員的枷鎖,即使Ant出現(xiàn),程序員深受困擾,而且Ant的Xml格式的Build文件的學習階梯又給程序員加重了一層負擔.程序員頭頂上的天空依然陰霾,只到有了Maven的出現(xiàn).

Maven的主要功能有:
1.構建項目(Builds)
2.文檔編制(Documentation)
3.報告(Reporting)
4.依賴管理(Dependencies)
5.配置管理(SCMs)
6.發(fā)布管理(Releases)

和Ant一樣,Maven也是Apache的一個子項目,但要簡化和強大了許多,你可以從以下網頁(http://maven.apache.org)得到它的所有信息.以前用Ant構建的項目紛紛都轉向了Maven及其后繼版本Maven2.比如著名的Struts2(http://struts.apache.org/2.x/):

要在你的機器上安裝并運行Maven,首先你必須安裝了JDK1.4以上的版本,并且在環(huán)境變量中設置了JAVA_HOME,否則Maven將找不到JRE,然后把如下地址(http://archive.apache.org/dist/maven/binaries/maven-2.0.3-bin.zip)的文件下載到本地.請注意,這不是目前的最新版本,當前的最新版本是2.0.6,但下載文件似乎有問題.Linux下的版本請下載其它相關版本.

Maven在Window系統(tǒng)上的安裝.
一.將下載的文件maven-2.0.3-bin.zip解壓到本地,這里假設你解壓的路徑為:C:\maven-2.0.3.
二.將解壓路徑的bin目錄添加到你機器的環(huán)境變量中.
????? 具體步驟:
???? 1.解壓路徑的bin目錄為 C:\maven-2.0.3\bin ,則把此路徑拷貝下來.
????????????
???? 2.按下圖打開系統(tǒng)的環(huán)境變量選項,將上述地址添加到path變量的尾后,記得中間要加分號.
???? 3.添加完的結果如下圖:
?????????

??? 注:另一種方法是增加相應的環(huán)境變量maven_home=maven的解壓目錄,再在path中增加%maven_home%\bin;這兩種方法效果都是一樣的,各位可以選擇自己喜歡的一種.

三.測試:打開Command窗口,輸入mvn -version,如果按下圖輸出則表示安裝正確.
?????????

至此Maven安裝完成,輕松一下吧.如果希望對Maven2多了解一些,請下載這本電子書:
http://www.blogjava.net/Files/sitinspring/BetterBuildsWithMaven.rar

?

我的Maven2之旅:二.Maven常用命令

上一篇相信你已經安裝了好了Maven,這次只想把一些基本命令列舉一下,請把它們記在你的腦子中,懶一點也要記在你的筆記本上,因為你以后會常常用到它們.

1.創(chuàng)建Maven目錄
mvn archetype:create -DgroupId=com.yourCompanyName -DartifactId=yourAppName

2.測試
mvn test

3.編譯類
mvn compile

4.打包
mvn package

5.生成Site
mvn site

5.清除
mvn clean

以上命令都是在command窗口運行的.它們還可以混合運行,如mvn test compile package,在以后的講述中會逐漸用到它們.

附錄:

Maven的生命周期及其與之對應的命令
validate:驗證工程是否正確,所有需要的資源是否可用。
compile:編譯項目的源代碼。
test-compile:編譯項目測試代碼。
test:使用已編譯的測試代碼,測試已編譯的源代碼。
package:已發(fā)布的格式,如jar,將已編譯的源代碼打包。
integration-test:在集成測試可以運行的環(huán)境中處理和發(fā)布包。
verify:運行任何檢查,驗證包是否有效且達到質量標準。
install:把包安裝在本地的repository中,可以被其他工程作為依賴來使用
deploy:在整合或者發(fā)布環(huán)境下執(zhí)行,將最終版本的包拷貝到遠程的repository,使得其他的開發(fā)者或者工程可以共享。
generate-sources:產生應用需要的任何額外的源代碼,如xdoclet。

我的Maven2之旅:三.Maven的一小步,個人的一大步

上一篇已經講到了Maven的基本命令,今天我們就來小試牛刀一把.

此前,我們可以用Eclispe創(chuàng)建一個小的Java工程,本人創(chuàng)建了一個能輸出"Hello!Maven!"的工程,它只有一個類,一個函數(shù),不用猜你也能想到里面寫的什么.

指的一提的是它的目錄結構,下面是這個工程目錄結構的截圖:

為什么要在src底下放兩層目錄呢,一會將見分曉.

接下來,我們使用Maven創(chuàng)建一個HelloMaven的Maven項目,打開cmd窗口,轉入你的Maven工程目錄(本人機器上是C:\tmp),然后輸入如下的命令:
mvn archetype:create -DgroupId=com.sitinspring -DartifactId=HelloMaven
其中,com.sitinspring告知了Maven工程的代碼根目錄,而HelloMaven是工程名.這段命令指示Maven創(chuàng)建一個HelloMaven的工程,它的代碼根目錄是com.sitinspring.命令運行后將生成一個名為HelloMaven的目錄,其中有主目錄,測試目錄和工程文件pom.xml.

接到你的命令,Maven開始工作了,它輸出了一大段文字,見下圖:



你將得到一個名叫HelloMaven的目錄,如下圖:


在HelloMaven目錄下,還將生成一個pom.xml的文件,它就是Maven生成的工程文件.暫時你不需要關心其具體內容.
因為接下來還有任務:把Eclispe工程中的Inlet.java文件放入C:\tmp\HelloMaven\src\main\java\com\sitinspring中.

然后打開cmd窗口,進入C:\tmp\HelloMaven目錄.執(zhí)行命令:
mvn package
你將看到Maven再次輸出一堆信息.如下圖:


其后C:\tmp\HelloMaven的目錄結構如下圖:


在target目錄下,有classes目錄.這是生成的class文件;根目錄下還生成了我們的目標文件HelloMaven-1.0-SNAPSHOT.jar,它就是打包后的jar.

測試一下,我們打開cmd窗口,進入目錄 C:\tmp\HelloMaven\target,然后執(zhí)行命令:
java -cp HelloMaven-1.0-SNAPSHOT.jar com.sitinspring.Inlet,你將看到Hello!Maven!被輸出出來.如下圖.


現(xiàn)在為止,我們未曾寫一句代碼就得到了項目的jar文件,你可以拿自己以前的工程來試試mvn package的功能了.
如果是Swing程序的話效果更好.下圖是Swing程序包執(zhí)行的效果.


本文例子下載一:http://www.blogjava.net/Files/sitinspring/MavenPakcageExample01.zip
本文例子下載二:http://www.blogjava.net/Files/sitinspring/MavenPakcageExample02.zip
(這個例子就是上圖輸出的Swing程序,但Src路徑要深一些,所以DgroupId也不同,具體寫法請大家揣摩)

附錄:
Maven工程的目錄結構:

Maven project root??
??? pom.xmlMaven2 project fileMaven2項目文件
??? src/??
??????? main/project main directory項目主體目錄
??????????????? javasource code directory原碼目錄
??????????????? resourcesthe directory of resource?for source code原碼所需資源
??????????????? filtersthe directory of filtering resource files原碼所需資源文件過濾
??????????????? assemblyAssembly descriptors?
??????????????? configthe directory of configuration file?配置文件目錄
??????? test??
??????????????? javatest source code directory測試原碼目錄
??????????????? resourcesthe directory of resource?for the test source code測試原碼所需資源
??????????????? filtersthe directory of filtering test resource files測試原碼所需資源文件過濾
??????? sitethe directory of site resource與site相關的資源目錄
??? targetthe directory for output輸出目錄
??????? classesthe directory for output classesclass 目錄
??????? test-classesthe directory for output test classes?test class 目錄
??????? sitethe directory for output site and reportssite 輸出目錄

我的Maven2之旅:四.Junit單元測試的活讓Maven自動去干

上一講已經說了打包,這次說說測試.

首先準備測試材料,這里我做了一個Calculator類以及測試它的類TestCalculator,它們的代碼如下:
Calculator類:
package?com.sitinspring;

public?class?Calculator?{
????
public?static?void?main(String[]?arg)?{
????????System.out.println(
"Hello!Maven!");
????}


????
public?int?add(int?op1,?int?op2){
????????
return?op1?+?op2;
????}


????
public?int?sub(int?op1,?int?op2){
????????
return?op1?-?op2;
????}

}

TestCalculator類(Eclipse下進行單元測試通過):
package?com.sitinspring;

import?junit.framework.TestCase;

public?class?TestCalculator?extends?TestCase{
????
public?void?testAdd()?{
????????Calculator?calculator?
=?new?Calculator();
????????
int?result?=?calculator.add(50,?20);
????????assertEquals(
70,?result);
????}


????
public?void?testSub()?{
????????Calculator?calculator?
=?new?Calculator();
????????
int?result?=?calculator.sub(50,?20);
????????assertEquals(
30,?result);
????}

}



我們的目標是讓Maven調用TestCalculator類來測試Calculator類.

首先我們還需要建立一個名為Calculator的Maven工程.請使用如下命令:
mvn archetype:create -DgroupId=com.sitinspring -DartifactId=Calculator

運行完畢后,展開Calculator目錄,我們將發(fā)現(xiàn)如圖結構:


簡而言之,Src下的main目錄是用來放置程序文件的,而Src下的main目錄是用來放置單元測試文件的.
所以,Calculator類應該被放入Calculator\src\main\java\com\sitinspring中;
而TestCalculator類應該被放入Calculator\src\test\java\com\sitinspring中.

如此辦理后,讓我們打開cmd窗口,進入Calculator目錄,執(zhí)行命令:
mvn test

上圖可以看到TestCalculator類的執(zhí)行結果顯示測試通過,與Eclipse中測試結果相同.

有時候,MVN test,就是這么簡單!

例程下載: http://www.blogjava.net/Files/sitinspring/MavenTest.zip

最后給大家留一個懸念,如果你安裝了Maven的話,請在你的硬盤中搜索".m2",看看里面有什么?

我的Maven2之旅:五.pom.xml基本元素介紹



上面就是前次HelloMaven工程的pom.xml文件,我們可以通過修改其中的元素使工程按照我們的意圖運行,對于接觸Maven的人,主要就是和pom.xml文件在打交道.

pom.xml文件基本節(jié)點介紹:
<project>:文件的根節(jié)點.
<modelversion>:pom.xml使用的對象模型版本.
<groupId>:創(chuàng)建項目的組織或團體的唯一Id.
<artifactId>:項目的唯一Id,可視為項目名.
<packaging>:打包物的擴展名,一般有JAR,WAR,EAR等
<version>:產品的版本號.
<name>:項目的顯示名,常用于Maven生成的文檔。
<url>:組織的站點,常用于Maven生成的文檔。
<description>:項目的描述,常用于Maven生成的文檔。

下面我們來修改一下這些節(jié)點如下:


將上面兩幅圖比較一下,可以看到version,name,url,description都發(fā)生了變化。

執(zhí)行mvn clean
然后執(zhí)行mvn package
剛才的變化將反映在工程中。
從結果上說,打包出的jar文件由原來的HelloMaven-1.0-SNAPSHOT.jar變成了HelloMaven-1.0.0.jar.這是Version元素修改造成的結果.

執(zhí)行mvn site后,在\HelloMaven\target下將生成工程的site目錄:


點擊其中的project-info.html將出現(xiàn)如下畫面.


和首次展示的Struts2首頁畫面比較,只是簡陋一些,今天只是初體驗一下mvn site的效果,如果你將工程逐漸完善起來,我敢肯定它能達到或超過Struts2的Maven工程的效果.

我的Maven2之旅:六.在Maven工程中將資源文件打包

在Java項目中不只是jav文件,經常會有許多資源文件,如屬性文件,圖片資源什么的,如何把它們也一起加載到Maven工程中去呢?這個問題不難,利用resource就可以達到這個目的.因為${basedir}/src/main/resources都會編譯到jar文件中,而且該目錄下的內容將直接位于jar文件的頂部.

下圖是在前面已經用到過的程序Source Comparer程序,唯一不同的是它的Browse按鈕是圖片式的.


具體實現(xiàn)的代碼是這樣的:

String?location="/compare.GIF";?
URL?imageUrl
=BrowsePanel.class.getResource(location);?
????????
browseBtn?
=?new?JButton(new?ImageIcon(imageUrl));?


從上面的代碼可以看出,程序是從類的根路徑取得了圖片資源compare.GIF,再賦給按鈕browseBtn.所以Maven工程中也應該是一樣的處理方式.現(xiàn)在的問題是如何把圖片資源compare.GIF加載到jar文件中去.

Maven為此提供了一個方法,那就是在MavenResource\src\main下建立一個名為resources的目錄,再把圖片資源文件compare.GIF拷貝到里面,具體結構如下圖:


執(zhí)行mvn package后,用解壓工具如WinRar打開MavenResource-1.0-SNAPSHOT.jar,可以發(fā)現(xiàn)圖片compare.GIF已經被打進去了.


如果打開cmd窗口,進入target目錄,執(zhí)行命令:
java -cp MavenResource-1.0-SNAPSHOT.jar com.citigroup.junglesong.Inlet


執(zhí)行的結果和在Eclipse中效果一致,這里就不再貼出了.

上面說的是程序執(zhí)行時使用資源的情況,如果是測試代碼需要使用資源的話,可以${basedir}/src/test下新建一個resources目錄,將資源放入其中,測試代碼可以使用這樣的方式使用資源:
InputStream is = getClass().getResourceAsStream( "/test.properties" );
可見測試代碼加載資源和主體代碼加載資源是很相似的.

通過對pom文件中build 節(jié)點的修改,Maven還可以進行資源過濾,因為目前一時用不到暫時擱置一下,有興趣或需要的人可以到http://maven.apache.org/guides/getting-started/index.html#How%20do%20I%20filter%20resource%20files? 去看看.

本文例子下載:
http://www.blogjava.net/Files/sitinspring/MavenResource20070620211407.zip

?

我的Maven2之旅:七.加載第三方開源庫

java程序調用一堆第三方庫是很常見的事情,例子程序中就調用了網上常見庫jdom讀取xml文件.

package?com.sitinspring;

import?java.io.InputStream;
import?java.util.Iterator;
import?java.util.List;

import?org.jdom.Document;
import?org.jdom.Element;
import?org.jdom.input.SAXBuilder;

public?class?Inlet{
????
public?static?void?main(String[]?arg){????
????????
try{
????????????SAXBuilder?builder
=new?SAXBuilder?();
????????????InputStream?is?
=Inlet.class.getResourceAsStream(?"/testfile.xml"?);
????????????Document?doc
=builder.build(is);

????????????Element?root
=doc.getRootElement();
????????????List?ls
=root.getChildren();

????????????
for(Iterator?it=ls.iterator();it.hasNext();){
???????????????Element?elm
=(Element?)it.next();
???????????????System.out.println(elm.getName());
????????????}
?
????????}

????????
catch(Exception?ex){
????????????ex.printStackTrace();
????????}

????}

}


如何讓Maven工程也能找到Jdom庫呢,很簡單,添加一個dependency節(jié)點就能做到,詳情請見下列代碼的jdom處.

<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/maven-v4_0_0.xsd">
??
<modelVersion>4.0.0</modelVersion>
??
<groupId>com.sitinspring</groupId>
??
<artifactId>Maevn3ndPart</artifactId>
??
<packaging>jar</packaging>
??
<version>1.0-SNAPSHOT</version>
??
<name>Maevn3ndPart</name>
??
<url>http://maven.apache.org</url>
??
<dependencies>
????
<dependency>
??????
<groupId>junit</groupId>
??????
<artifactId>junit</artifactId>
??????
<version>3.8.1</version>
??????
<scope>test</scope>
????
</dependency>
????
<dependency>
??????
<groupId>jdom</groupId>
??????
<artifactId>jdom</artifactId>
??????
<version>1.0</version>
??????
<scope>compile</scope>
????
</dependency>
??
</dependencies>
</project>

然后執(zhí)行Mvn compile就可以看見,Maven從網上下載了jdom庫到本地的repository目錄,請看下圖.


將dependency節(jié)點和repository中jdom路徑對比就可以知道,dependency節(jié)點中groupId對應路徑中第一層目錄,artifactId對應第二層,version對應第三層,而scope用于編譯則是compile.這些發(fā)現(xiàn)我們以后還將用到.

本文例程:
http://www.blogjava.net/Files/sitinspring/Maevn3ndPart20070621133225.zip

附錄:
Dependency Scope

在POM 4中,<dependency>中還引入了<scope>,它主要管理依賴的部署。目前<scope>可以使用5個值:

  • compile,缺省值,適用于所有階段,會隨著項目一起發(fā)布。
  • provided,類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。
  • runtime,只在運行時使用,如JDBC驅動,適用運行和測試階段。
  • test,只在測試時使用,用于編譯和運行測試代碼。不會隨項目發(fā)布。
  • system,類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查找它。

我的Maven2之旅:八.加載自定義庫

第七篇中講述了加載第三方開源庫的情況,但如果是公司或個人的私有庫的話這樣做就無效了.但我們可以根據(jù)上一篇中的發(fā)現(xiàn)"將dependency節(jié)點和repository中jdom路徑對比就可以知道,dependency節(jié)點中groupId對應路徑中第一層目錄,artifactId對應第二層,version對應第三層".因此采用手工在本地的repository目錄添加私有庫的方法.

下圖就是例程中的point庫在repository目錄中的路徑圖,將point.jar放在1.0.0目錄中就可以了.


對于無法通過網絡連接獲得第三方開源庫的情況也可以照此辦理.

如果這個jar也是使用Maven編譯成的,則可以用命令mvn install來安裝到本地Repository庫.

例程下載:
http://www.blogjava.net/Files/sitinspring/MavenSelfDependency20070621101501.zip

?

我的Maven2之旅:九.使用Maven一次編譯多個工程.

如果我們有許多Maven工程需要編譯,如果一個個敲命令怕要累死,寫批處理又有點不太正規(guī),幸好Maven采用了Module節(jié)點解決了我們的問題,可以通過一次命令編譯打包所有的包.

下圖中的MavenA和MavenB是兩個需要編譯打包的工程,MavenModules是它們的上級工程.


MavenA和MavenB的pom.xml一點也不需要改變,而MavenModules中的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/maven-v4_0_0.xsd">
??
<modelVersion>4.0.0</modelVersion>
??
<groupId>com.sitinspring</groupId>
??
<artifactId>MavenModules</artifactId>
??
<packaging>pom</packaging>
??
<version>1.0.0</version>
??
<name>MavenModules</name>
??
<url>http://www.blogjava.net/sitinspring</url>
??
<modules>
????
<module>ModuleA</module>
????
<module>ModuleB</module>
??
</modules>
</project>


通過觀察可以發(fā)現(xiàn),有兩點不同:
1.package節(jié)點設定為pom而不是jar,war等,這是主工程必需的,否則執(zhí)行命令必報錯.
2.添加了modules節(jié)點和其下的兩個module節(jié)點,節(jié)點名正好是子目錄,這樣在MavenModules目錄下執(zhí)行compile,package等命令就會深入子目錄去繼續(xù)執(zhí)行.

挺簡單的,基本就是這么多.

例程下載:
http://www.blogjava.net/Files/sitinspring/MavenModules20070621135351.zip

?

我的Maven2之旅:十.更完整的報告.

以前我們嘗試過一次Mvn site命令,但由于主控文件pom.xml并不周全,信息不是很完整.
而例子中的節(jié)點相對完整多了,使用它執(zhí)行mvn site命令會生成很完整的報告出來,以下就是這個文件的詳細內容:

<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/maven-v4_0_0.xsd">
????
<!--?The?Basics?-->
????
<modelVersion>4.0.0</modelVersion>
????
<groupId>com.citigroup.junglesong</groupId>
????
<artifactId>MavenResource</artifactId>
????
<packaging>jar</packaging>
????
<version>1.0-SNAPSHOT</version>
????
<name>MavenResource</name>
????
<url>http://maven.apache.org</url>

????
<!--?dependent?Libs?-->
????
<dependencies>
????????
<dependency>
????????????
<groupId>junit</groupId>
????????????
<artifactId>junit</artifactId>
????????????
<version>3.8.1</version>
????????????
<scope>test</scope>
????????
</dependency>
????
</dependencies>

????
<!--?Build?Settings?-->
????
<reporting>
????????
<plugins>
????????????
<plugin>
????????????????
<artifactId>
????????????????????maven-project-info-reports-plugin
????????????????
</artifactId>
????????????????
<reportSets>
????????????????????
<reportSet>
????????????????????????
<id>sunlink</id>
????????????????????????
<reports>
????????????????????????????
<report>javadoc</report>
????????????????????????
</reports>
????????????????????????
<inherited>true</inherited>
????????????????????????
<configuration>
????????????????????????????
<links>
????????????????????????????????
<link>
????????????????????????????????????http://java.sun.com/j2se/1.5.0/docs/api/
????????????????????????????????
</link>
????????????????????????????
</links>
????????????????????????
</configuration>
????????????????????
</reportSet>
????????????????
</reportSets>
????????????
</plugin>
????????????
<plugin>
????????????????
<groupId>org.apache.maven.plugins</groupId><!--Generate?Java?Doc?-->
????????????????
<artifactId>maven-javadoc-plugin</artifactId>
????????????
</plugin>
????????????
<plugin>
????????????????
<groupId>org.apache.maven.plugins</groupId><!--?Code?Check?-->
????????????????
<artifactId>maven-checkstyle-plugin</artifactId>
????????????????
<configuration>
????????????????????
<configLocation>
????????????????????????config/sun_checks.xml
????????????????????
</configLocation>
????????????????
</configuration>
????????????
</plugin>
????????????
<plugin>
????????????????
<groupId>org.codehaus.mojo</groupId><!--?Test?Report?-->
????????????????
<artifactId>surefire-report-maven-plugin</artifactId>
????????????
</plugin>
????????????
<plugin>
????????????????
<groupId>org.codehaus.mojo</groupId><!--?HTMLize?Source?Code?-->
????????????????
<artifactId>jxr-maven-plugin</artifactId>
????????????
</plugin>
????????????
<plugin><!--?Find?Bugs?-->
????????????????
<groupId>org.codehaus.mojo</groupId>
????????????????
<artifactId>findbugs-maven-plugin</artifactId>
????????????
</plugin>
????????
</plugins>
????
</reporting>

????
<!--?More?Project?Information?-->
????
<licenses>
????????
<license>
????????????
<name>Apache?2</name>
????????????
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
????????????
<distribution>repo</distribution>
????????????
<comments>A?business-friendly?OSS?license</comments>
????????
</license>
????
</licenses>

????
<organization>
????????
<name>SitInSpring</name>
????????
<url>http://www.blogjava.net/sitinspring</url>
????
</organization>

????
<developers>
????????
<developer>
????????????
<id>sitinsprng</id>
????????????
<name>SitInSpring</name>
????????????
<email>SitInSpring@ufo.com</email>
????????????
<url>http://www.blogjava.net/sitinspring</url>
????????????
<organization>UFO</organization>
????????????
<organizationUrl>http://www.UFO.org</organizationUrl>
????????????
<roles>
????????????????
<role>architect</role>
????????????????
<role>developer</role>
????????????
</roles>
????????????
<timezone>+8</timezone>
????????????
<properties>
????????????????
<picUrl>http://www.mxjava.com/logo.gif</picUrl>
????????????
</properties>
????????
</developer>

????????
<developer>
????????????
<id>junglesong</id>
????????????
<name>Junglesong</name>
????????????
<email>junglesong@gmail.com</email>
????????????
<url>http://www.blogjava.net/sitinspring</url>
????????????
<organization>UFO</organization>
????????????
<organizationUrl>http://www.UFO.org</organizationUrl>
????????????
<roles>
????????????????
<role>architect</role>
????????????????
<role>developer</role>
????????????
</roles>
????????????
<timezone>+8</timezone>
????????????
<properties>
????????????????
<picUrl>
????????????????????http://foto.yculblog.com/junglesong/TxtNovelGarden.gif
????????????????
</picUrl>
????????????
</properties>
????????
</developer>
????
</developers>

????
<contributors>
????????
<contributor>
????????????
<name>Alien</name>
????????????
<email>Alien@hotmail.com</email>
????????????
<url>http://Alien.com</url>
????????????
<organization>AlienOrganization</organization>
????????????
<organizationUrl>
????????????????http://AlienOrganization.com
????????????
</organizationUrl>
????????????
<roles>
????????????????
<role>tester</role>
????????????
</roles>
????????????
<timezone>-5</timezone>
????????????
<properties>
????????????????
<gtalk>some.name@gmail.com</gtalk>
????????????
</properties>
????????
</contributor>
????
</contributors>

????
<repositories>
????????
<repository>
????????????
<releases>
????????????????
<enabled>false</enabled>
????????????????
<updatePolicy>always</updatePolicy>
????????????????
<checksumPolicy>warn</checksumPolicy>
????????????
</releases>
????????????
<snapshots>
????????????????
<enabled>true</enabled>
????????????????
<updatePolicy>never</updatePolicy>
????????????????
<checksumPolicy>fail</checksumPolicy>
????????????
</snapshots>
????????????
<id>codehausSnapshots</id>
????????????
<name>Codehaus?Snapshots</name>
????????????
<url>http://snapshots.maven.codehaus.org/maven2</url>
????????????
<layout>default</layout>
????????
</repository>
????
</repositories>

????
<!--?Environment?Settings?-->
????
<mailingLists>
????????
<mailingList>
????????????
<name>User?List</name>
????????????
<subscribe>user-subscribe@127.0.0.1</subscribe>
????????????
<unsubscribe>user-unsubscribe@127.0.0.1</unsubscribe>
????????????
<post>user@127.0.0.1</post>
????????????
<archive>http://127.0.0.1/user/</archive>
????????????
<otherArchives>
????????????????
<otherArchive>
????????????????????http://base.google.com/base/1/127.0.0.1
????????????????
</otherArchive>
????????????
</otherArchives>
????????
</mailingList>
????
</mailingLists>
</project>




上文中,粗略部分加上了注釋,具體細節(jié)您可以和site下生成的系列文件對照一下,相信不用我再贅述.如果有疑問請參看Maven的pom介紹文檔.

可以其中需要的部分摘取下來放到您的pom.xml中去,以生成所需要的報告.

例程下載:
http://www.blogjava.net/Files/sitinspring/MavenResourceReportsAndAddInfo20070622153905.zip

?

我的Maven2之旅:十一.打包一個web工程.

目標:將一個web工程打包.
其目錄如下:


使用如下命令創(chuàng)建Maven工程:
mvn archetype:create -DgroupId=com.junglesong.mytodo -DartifactId=mytodo -DarchetypeArtifactId=maven-archetype-webapp

創(chuàng)建工程后我們還需要做以下工作:
1.將Eclipse工程MyTodo\WEB-INF\src\com下所有目錄及文件拷貝到maven工程mytodo\src\main\java下,這是做源碼拷貝工作.
2.將Eclipse工程MyTodo\WEB-INF下web.xml和todo.xml拷貝到maven工程mytodo\src\main\webapp\WEB-INF下,web.xml就不肖說了,而todo.xml是做持久化用的,供源碼使用,故而要拷貝.
3.將Eclipse工程MyTodo下web目錄拷貝到mytodo\src\main\webapp下,這是做頁面文件拷貝工作.
到此文件轉移完成.

此后,我們還需要修改一下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/maven-v4_0_0.xsd">
??
<modelVersion>4.0.0</modelVersion>
??
<groupId>com.junglesong.mytodo</groupId>
??
<artifactId>mytodo</artifactId>
??
<packaging>war</packaging>
??
<version>1.0-SNAPSHOT</version>
??
<name>mytodo?Maven?Webapp</name>
??
<url>http://maven.apache.org</url>
??
<dependencies>
????
<dependency>
??????
<groupId>junit</groupId>
??????
<artifactId>junit</artifactId>
??????
<version>3.8.1</version>
??????
<scope>test</scope>
????
</dependency>
????
<dependency>
??????
<groupId>dom4j</groupId>
??????
<artifactId>dom4j</artifactId>
??????
<version>1.6.1</version>
??????
<scope>compile</scope>
????
</dependency>
????
<dependency>
??????
<groupId>javax.servlet</groupId>
??????
<artifactId>servlet-api</artifactId>
??????
<version>2.4</version>
??????
<scope>provided</scope>
????
</dependency>
??
</dependencies>
??
<build>
????
<finalName>mytodo</finalName>
??
</build>
</project>


值得注意的是dependency中servlet一處的寫法.

此后執(zhí)行mvn package 我們就會得到打包文件mytodo.war.

打開Tomcat Web Application Manager 頁面,將mytodo.war載入后,輸入:
http://127.0.0.1:8080/mytodo/ShowPage
將出現(xiàn)如下畫面:


執(zhí)行原有的操作都能正確反映,說明我們這一路過程都是正確的.

例程下載:
http://www.blogjava.net/Files/sitinspring/mytodoMvnPrj20070626094131.zip

?

我的Maven2之旅:十二.使用JDK1.5編譯Maven工程

現(xiàn)在JDK1.5已經越來越普及了,使用它編寫或者改寫的程序也越來越多,當我們把符合JDK1.5新語法特征的程序送給maven編譯時會出現(xiàn)下列問題.



這時該如何使用 -source 1.5 以啟用泛型呢,將pom.xml文件添加一段即可.請看完整的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/maven-v4_0_0.xsd">
????
<modelVersion>4.0.0</modelVersion>
????
<groupId>com.junglesong</groupId>
????
<artifactId>sqlanywhere</artifactId>
????
<packaging>jar</packaging>
????
<version>1.0.3</version>
????
<name>sqlanywhere</name>
????
<url>http://maven.apache.org</url>
????
<dependencies>
????????
<dependency>
????????????
<groupId>junit</groupId>
????????????
<artifactId>junit</artifactId>
????????????
<version>3.8.1</version>
????????????
<scope>test</scope>
????????
</dependency>
????????
<dependency>
????????????
<groupId>dom4j</groupId>
????????????
<artifactId>dom4j</artifactId>
????????????
<version>1.6.1</version>
????????????
<scope>compile</scope>
????????
</dependency>
????????
<dependency>
????????????
<groupId>log4j</groupId>
????????????
<artifactId>log4j</artifactId>
????????????
<version>1.2.14</version>
????????????
<scope>compile</scope>
????????
</dependency>
????
</dependencies>

????
<build>
????????
<finalName>sqlanywhere1.0.3</finalName>
????????
<plugins>
????????????
<plugin>
????????????????
<artifactId>maven-compiler-plugin</artifactId>
????????????????
<configuration>
????????????????????
<source>1.5</source>
????????????????????
<target>1.5</target>
????????????????
</configuration>
????????????
</plugin>
????????
</plugins>
????
</build>
</project>


上面<build>節(jié)點中的<plugin>部分就是我們要添加的,就這么簡單.

????????????<plugin>
????????????????
<artifactId>maven-compiler-plugin</artifactId>
????????????????
<configuration>
????????????????????
<source>1.5</source>
????????????????????
<target>1.5</target>
????????????????
</configuration>
????????????
</plugin>

?

此后mvn將使用jDK1.5編譯程序.

總結

以上是生活随笔為你收集整理的Maven2之旅的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。