天天看點

Maven中的pom.xml配置檔案詳解-排版

原文:http://blog.csdn.net/u012152619/article/details/51485297

<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  
    <!-- 模型版本。maven2.0必須是這樣寫,現在是maven2唯一支援的版本 -->  
    <modelVersion>4.0.0</modelVersion>  
  
    <!-- 公司或者組織的唯一标志,并且配置時生成的路徑也是由此生成, 如com.winner.trade,maven會将該項目打成的jar包放本地路徑:/com/winner/trade -->  
    <groupId>com.winner.trade</groupId>  
  
    <!-- 本項目的唯一ID,一個groupId下面可能多個項目,就是靠artifactId來區分的 -->  
    <artifactId>trade-core</artifactId>  
  
    <!-- 本項目目前所處的版本号 -->  
    <version>1.0.0-SNAPSHOT</version>  
  
    <!-- 打包的機制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,預設為jar -->  
    <packaging>jar</packaging>  
  
    <!-- 幫助定義構件輸出的一些附屬構件,附屬構件與主構件對應,有時候需要加上classifier才能唯一的确定該構件 不能直接定義項目的classifer,因為附屬構件不是項目直接預設生成的,而是由附加的插件幫助生成的 -->  
    <classifier>...</classifier>  
  
    <!-- 定義本項目的依賴關系 -->  
    <dependencies>  
  
        <!-- 每個dependency都對應這一個jar包 -->  
        <dependency>  
  
            <!--一般情況下,maven是通過groupId、artifactId、version這三個元素值(俗稱坐标)來檢索該構件, 然後引入你的工程。如果别人想引用你現在開發的這個項目(前提是已開發完畢并釋出到了遠端倉庫),-->   
            <!--就需要在他的pom檔案中建立一個dependency節點,将本項目的groupId、artifactId、version寫入, maven就會把你上傳的jar包下載下傳到他的本地 -->  
            <groupId>com.winner.trade</groupId>  
            <artifactId>trade-test</artifactId>  
            <version>1.0.0-SNAPSHOT</version>  
  
            <!-- maven認為,程式對外部的依賴會随着程式的所處階段和應用場景而變化,是以maven中的依賴關系有作用域(scope)的限制。 -->  
            <!--scope包含如下的取值:compile(編譯範圍)、provided(已提供範圍)、runtime(運作時範圍)、test(測試範圍)、system(系統範圍) -->  
            <scope>test</scope>  
  
            <!-- 設定指依賴是否可選,預設為false,即子項目預設都繼承:為true,則子項目必需顯示的引入,與dependencyManagement裡定義的依賴類似  -->  
            <optional>false</optional>  
  
            <!-- 屏蔽依賴關系。 比如項目中使用的libA依賴某個庫的1.0版,libB依賴某個庫的2.0版,現在想統一使用2.0版,就應該屏蔽掉對1.0版的依賴 -->  
            <exclusions>  
                <exclusion>  
                    <groupId>org.slf4j</groupId>  
                    <artifactId>slf4j-api</artifactId>  
                </exclusion>  
            </exclusions>  
  
        </dependency>  
  
    </dependencies>  
  
    <!-- 為pom定義一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} -->  
    <properties>  
        <file.encoding>UTF-8</file.encoding>  
        <java.source.version>1.5</java.source.version>  
        <java.target.version>1.5</java.target.version>  
    </properties>  
  
    ...  
</project>  

           

一般來說,上面的幾個配置項對任何項目都是必不可少的,定義了項目的基本屬性。

這裡有必要對一個不太常用的屬性classifier做一下解釋,因為有時候引用某個jar包,classifier不寫的話會報錯。

classifier元素用來幫助定義構件輸出的一些附屬構件。附屬構件與主構件對應,比如主構件是 kimi-app-2.0.0.jar,該項目可能還會通過使用一些插件生成 如kimi-app-2.0.0-javadoc.jar (Java文檔)、 kimi-app-2.0.0-sources.jar(Java源代碼) 這樣兩個附屬構件。這時候,javadoc、sources就是這兩個附屬構件的classifier,這樣附屬構件也就擁有了自己唯一的坐标。

classifier的用途在于:

  1. maven download javadoc / sources jar包的時候,需要借助classifier指明要下載下傳那個附屬構件
  2. 引入依賴的時候,有時候僅憑groupId、artifactId、version無法唯一的确定某個構件,需要借助classifier來進一步明确目标。比如JSON-lib,有時候會同一個版本會提供多個jar包,在JDK1.5環境下是一套,在JDK1.3環境下是一套:

    ​​

    Maven中的pom.xml配置檔案詳解-排版
    引用它的時候就要注明JDK版本,否則maven不知道你到底需要哪一套jar包:
<dependency>  
	<groupId>net.sf.json-lib</groupId>  
	<artifactId>json-lib</artifactId>  
	 <version>2.4</version>  
	<classifier>jdk15</classifier>  
</dependency>  
           

建構配置

<build>  
  
    <!-- 産生的構件的檔案名,預設值是${artifactId}-${version}。 -->  
    <finalName>myPorjectName</finalName>  
  
    <!-- 建構産生的所有檔案存放的目錄,預設為${basedir}/target,即項目根目錄下的target -->  
    <directory>${basedir}/target</directory>  
  
    <!--當項目沒有規定目标(Maven2叫做階段(phase))時的預設值, -->  
    <!--必須跟指令行上的參數相同例如jar:jar,或者與某個階段(phase)相同例如install、compile等 -->  
    <defaultGoal>install</defaultGoal>  
  
    <!--當filtering開關打開時,使用到的過濾器屬性檔案清單。 -->  
    <!--項目配置資訊中諸如${spring.version}之類的占位符會被屬性檔案中的實際值替換掉 -->  
    <filters>  
        <filter>../filter.properties</filter>  
    </filters>  
  
    <!--項目相關的所有資源路徑清單,例如和項目相關的配置檔案、屬性檔案,這些資源被包含在最終的打封包件裡。 -->  
    <resources>  
        <resource>  
  
            <!--描述了資源的目标路徑。該路徑相對target/classes目錄(例如${project.build.outputDirectory})。 -->  
            <!--舉個例子,如果你想資源在特定的包裡(org.apache.maven.messages),你就必須該元素設定為org/apache/maven/messages。 -->  
            <!--然而,如果你隻是想把資源放到源碼目錄結構裡,就不需要該配置。 -->  
            <targetPath>resources</targetPath>  
  
            <!--是否使用參數值代替參數名。參數值取自properties元素或者檔案裡配置的屬性,檔案在filters元素裡列出。 -->  
            <filtering>true</filtering>  
  
            <!--描述存放資源的目錄,該路徑相對POM路徑 -->  
            <directory>src/main/resources</directory>  
  
            <!--包含的模式清單 -->  
            <includes>  
                <include>**/*.properties</include>  
                <include>**/*.xml</include>  
            </includes>  
  
            <!--排除的模式清單 如果<include>與<exclude>劃定的範圍存在沖突,以<exclude>為準 -->  
            <excludes>  
                <exclude>jdbc.properties</exclude>  
            </excludes>  
  
        </resource>  
    </resources>  
  
    <!--單元測試相關的所有資源路徑,配制方法與resources類似 -->  
    <testResources>  
        <testResource>  
            <targetPath />  
            <filtering />  
            <directory />  
            <includes />  
            <excludes />  
        </testResource>  
    </testResources>  
  
    <!--項目源碼目錄,當建構項目的時候,建構系統會編譯目錄裡的源碼。該路徑是相對于pom.xml的相對路徑。 -->  
    <sourceDirectory>${basedir}\src\main\java</sourceDirectory>  
  
    <!--項目腳本源碼目錄,該目錄和源碼目錄不同, <!-- 絕大多數情況下,該目錄下的内容會被拷貝到輸出目錄(因為腳本是被解釋的,而不是被編譯的)。 -->  
    <scriptSourceDirectory>${basedir}\src\main\scripts  
    </scriptSourceDirectory>  
  
    <!--項目單元測試使用的源碼目錄,當測試項目的時候,建構系統會編譯目錄裡的源碼。該路徑是相對于pom.xml的相對路徑。 -->  
    <testSourceDirectory>${basedir}\src\test\java</testSourceDirectory>  
  
    <!--被編譯過的應用程式class檔案存放的目錄。 -->  
    <outputDirectory>${basedir}\target\classes</outputDirectory>  
  
    <!--被編譯過的測試class檔案存放的目錄。 -->  
    <testOutputDirectory>${basedir}\target\test-classes  
    </testOutputDirectory>  
  
    <!--項目的一系列建構擴充,它們是一系列build過程中要使用的産品,會包含在running bulid‘s classpath裡面。 -->  
    <!--他們可以開啟extensions,也可以通過提供條件來激活plugins。 -->  
    <!--簡單來講,extensions是在build過程被激活的産品 -->  
    <extensions>  
  
        <!--例如,通常情況下,程式開發完成後部署到線上Linux伺服器,可能需要經曆打包、 -->  
        <!--将封包件傳到伺服器、SSH連上伺服器、敲指令啟動程式等一系列繁瑣的步驟。 -->  
        <!--實際上這些步驟都可以通過Maven的一個插件 wagon-maven-plugin 來自動完成 -->  
        <!--下面的擴充插件wagon-ssh用于通過SSH的方式連接配接遠端伺服器, -->  
        <!--類似的還有支援ftp方式的wagon-ftp插件 -->  
        <extension>  
            <groupId>org.apache.maven.wagon</groupId>  
            <artifactId>wagon-ssh</artifactId>  
            <version>2.8</version>  
        </extension>  
  
    </extensions>  
  
    <!--使用的插件清單 。 -->  
    <plugins>  
        <plugin>  
            <groupId></groupId>  
            <artifactId>maven-assembly-plugin</artifactId>  
            <version>2.5.5</version>  
  
            <!--在建構生命周期中執行一組目标的配置。每個目标可能有不同的配置。 -->  
            <executions>  
                <execution>  
  
                    <!--執行目标的辨別符,用于辨別建構過程中的目标,或者比對繼承過程中需要合并的執行目标 -->  
                    <id>assembly</id>  
  
                    <!--綁定了目标的建構生命周期階段,如果省略,目标會被綁定到源資料裡配置的預設階段 -->  
                    <phase>package</phase>  
  
                    <!--配置的執行目标 -->  
                    <goals>  
                        <goal>single</goal>  
                    </goals>  
  
                    <!--配置是否被傳播到子POM -->  
                    <inherited>false</inherited>  
  
                </execution>  
            </executions>  
  
            <!--作為DOM對象的配置,配置項因插件而異 -->  
            <configuration>  
                <finalName>${finalName}</finalName>  
                <appendAssemblyId>false</appendAssemblyId>  
                <descriptor>assembly.xml</descriptor>  
            </configuration>  
  
            <!--是否從該插件下載下傳Maven擴充(例如打包和類型處理器), -->  
            <!--由于性能原因,隻有在真需要下載下傳時,該元素才被設定成true。 -->  
            <extensions>false</extensions>  
  
            <!--項目引入插件所需要的額外依賴 -->  
            <dependencies>  
                <dependency>...</dependency>  
            </dependencies>  
  
            <!--任何配置是否被傳播到子項目 -->  
            <inherited>true</inherited>  
  
        </plugin>  
    </plugins>  
  
    <!--主要定義插件的共同元素、擴充元素集合,類似于dependencyManagement, -->  
    <!--所有繼承于此項目的子項目都能使用。該插件配置項直到被引用時才會被解析或綁定到生命周期。 -->  
    <!--給定插件的任何本地配置都會覆寫這裡的配置 -->  
    <pluginManagement>  
        <plugins>...</plugins>  
    </pluginManagement>  
  
</build>  
           

pom裡面的倉庫與setting.xml裡的倉庫功能是一樣的。主要的差別在于,pom裡的倉庫是個性化的。比如一家大公司裡的setting檔案是公用的,所有項目都用一個setting檔案,但各個子項目卻會引用不同的第三方庫,是以就需要在pom裡設定自己需要的倉庫位址。

分發配置

<!--項目分發資訊,在執行mvn deploy後表示要釋出的位置。 -->  
<!--有了這些資訊就可以把網站部署到遠端伺服器或者把構件部署到遠端倉庫。 -->  
<distributionManagement>  
  
    <!--部署項目産生的構件到遠端倉庫需要的資訊 -->  
    <repository>  
  
        <!--是配置設定給快照一個唯一的版本号(由時間戳和建構流水号),還是每次都使用相同的版本号 -->  
        <!--參見repositories/repository元素 -->  
        <uniqueVersion>true</uniqueVersion>  
  
        <id> repo-id </id>  
        <name> repo-name</name>  
        <url>file://${basedir}/target/deploy </url>  
        <layout />  
  
    </repository>  
  
    <!--構件的快照部署到哪裡,如果沒有配置該元素,預設部署到repository元素配置的倉庫 -->  
    <snapshotRepository>  
        <uniqueVersion />  
        <id />  
        <name />  
        <url />  
        <layout />  
    </snapshotRepository>  
  
    <!--部署項目的網站需要的資訊 -->  
    <site>  
  
        <!--部署位置的唯一辨別符,用來比對站點和settings.xml檔案裡的配置 -->  
        <id> site-id </id>  
  
        <!--部署位置的名稱 -->  
        <name> site-name</name>  
  
        <!--部署位置的URL,按protocol://hostname/path形式 -->  
        <url>scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web </url>  
  
    </site>  
  
    <!--項目下載下傳頁面的URL。如果沒有該元素,使用者應該參考首頁。 -->  
    <!--使用該元素的原因是:幫助定位那些不在倉庫裡的構件(由于license限制)。 -->  
    <downloadUrl />  
  
    <!--如果構件有了新的groupID和artifact ID(構件移到了新的位置),這裡列出構件的重定位資訊。 -->  
    <relocation>  
  
        <!--構件新的group ID -->  
        <groupId />  
  
        <!--構件新的artifact ID -->  
        <artifactId />  
  
        <!--構件新的版本号 -->  
        <version />  
  
        <!--顯示給使用者的,關于移動的額外資訊,例如原因。 -->  
        <message />  
  
    </relocation>  
  
    <!--給出該構件在遠端倉庫的狀态。不得在本地項目中設定該元素,因為這是工具自動更新的。 -->  
    <!--有效的值有:none(預設),converted(倉庫管理者從Maven 1 POM轉換過來), -->  
    <!--partner(直接從夥伴Maven 2倉庫同步過來),deployed(從Maven 2執行個體部署),verified(被核實時正确的和最終的)。 -->  
    <status />  
  
</distributionManagement>
           

倉庫配置

<!--發現依賴和擴充的遠端倉庫清單。 -->  
<repositories>  
  
    <!--包含需要連接配接到遠端倉庫的資訊 -->  
    <repository>  
  
        <!--如何處理遠端倉庫裡釋出版本的下載下傳 -->  
        <releases>  
  
            <!--true或者false表示該倉庫是否為下載下傳某種類型構件(釋出版,快照版)開啟。 -->  
            <enabled />  
  
            <!--該元素指定更新發生的頻率。Maven會比較本地POM和遠端POM的時間戳。 -->  
            <!--這裡的選項是:always(一直),daily(預設,每日), -->  
            <!--interval:X(這裡X是以分鐘為機關的時間間隔),或者never(從不)。 -->  
            <updatePolicy />  
  
            <!--當Maven驗證構件校驗檔案失敗時該怎麼做: -->  
            <!--ignore(忽略),fail(失敗),或者warn(警告)。 -->  
            <checksumPolicy />  
  
        </releases>  
  
        <!--如何處理遠端倉庫裡快照版本的下載下傳。有了releases和snapshots這兩組配置, -->  
        <!--POM就可以在每個單獨的倉庫中,為每種類型的構件采取不同的政策。 -->  
        <!--例如,可能有人會決定隻為開發目的開啟對快照版本下載下傳的支援 -->  
        <snapshots>  
            <enabled />  
            <updatePolicy />  
            <checksumPolicy />  
        </snapshots>  
  
        <!--遠端倉庫唯一辨別符。可以用來比對在settings.xml檔案裡配置的遠端倉庫 -->  
        <id> repo-id </id>  
  
        <!--遠端倉庫名稱 -->  
        <name> repo-name</name>  
  
        <!--遠端倉庫URL,按protocol://hostname/path形式 -->  
        <url>http://192.168.1.169:9999/repository/ </url>  
  
        <!--用于定位和排序構件的倉庫布局類型-可以是default(預設)或者legacy(遺留)。 -->  
        <!--Maven 2為其倉庫提供了一個預設的布局; -->  
        <!--然而,Maven1.x有一種不同的布局。 -->  
        <!--我們可以使用該元素指定布局是default(預設)還是legacy(遺留)。 -->  
        <layout> default</layout>  
  
    </repository>  
  
</repositories>  
  
<!--發現插件的遠端倉庫清單,這些插件用于建構和報表 -->  
<pluginRepositories>  
  
    <!--包含需要連接配接到遠端插件倉庫的資訊.參見repositories/repository元素 -->  
    <pluginRepository />  
  
</pluginRepositories>  
           

profile配置

<!--在列的項目建構profile,如果被激活,會修改建構處理 -->  
<profiles>  
  
    <!--根據環境參數或指令行參數激活某個建構處理 -->  
    <profile>  
        <!--自動觸發profile的條件邏輯。Activation是profile的開啟鑰匙。 -->  
        <activation>  
  
            <!--profile預設是否激活的辨別 -->  
            <activeByDefault>false</activeByDefault>  
  
            <!--activation有一個内建的java版本檢測,如果檢測到jdk版本與期待的一樣,profile被激活。 -->  
            <jdk>1.7</jdk>  
  
            <!--當比對的作業系統屬性被檢測到,profile被激活。os元素可以定義一些作業系統相關的屬性。 -->  
            <os>  
  
                <!--激活profile的作業系統的名字 -->  
                <name>Windows XP</name>  
  
                <!--激活profile的作業系統所屬家族(如 'windows') -->  
                <family>Windows</family>  
  
                <!--激活profile的作業系統體系結構 -->  
                <arch>x86</arch>  
  
                <!--激活profile的作業系統版本 -->  
                <version>5.1.2600</version>  
  
            </os>  
  
            <!--如果Maven檢測到某一個屬性(其值可以在POM中通過${名稱}引用),其擁有對應的名稱和值,Profile就會被激活。 -->  
            <!-- 如果值字段是空的,那麼存在屬性名稱字段就會激活profile,否則按區分大小寫方式比對屬性值字段 -->  
            <property>  
  
                <!--激活profile的屬性的名稱 -->  
                <name>mavenVersion</name>  
  
                <!--激活profile的屬性的值 -->  
                <value>2.0.3</value>  
  
            </property>  
  
            <!--提供一個檔案名,通過檢測該檔案的存在或不存在來激活profile。missing檢查檔案是否存在,如果不存在則激活profile。 -->  
            <!--另一方面,exists則會檢查檔案是否存在,如果存在則激活profile。 -->  
            <file>  
  
                <!--如果指定的檔案存在,則激活profile。 -->  
                <exists>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/</exists>  
  
                <!--如果指定的檔案不存在,則激活profile。 -->  
                <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/</missing>  
  
            </file>  
  
        </activation>  
        <id />  
        <build />  
        <modules />  
        <repositories />  
        <pluginRepositories />  
        <dependencies />  
        <reporting />  
        <dependencyManagement />  
        <distributionManagement />  
        <properties />  
    </profile>
           

profile配置項在setting.xml中也有,是pom.xml中profile元素的裁剪版本,包含了id,activation, repositories, pluginRepositories和 properties元素。這裡的profile元素隻包含這五個子元素是因為setting.xml隻關心建構系統這個整體(這正是settings.xml檔案的角色定位),而非單獨的項目對象模型設定。如果一個settings中的profile被激活,它的值會覆寫任何其它定義在POM中或者profile.xml中的帶有相同id的profile。

pom.xml中的profile可以看做pom.xml的副本,擁有與pom.xml相同的子元素與配置方法。它包含可選的activation(profile的觸發器)和一系列的changes。例如test過程可能會指向不同的資料庫(相對最終的deployment)或者不同的dependencies或者不同的repositories,并且是根據不同的JDK來改變的。隻需要其中一個成立就可以激活profile,如果第一個條件滿足了,那麼後面就不會在進行比對。

報表配置

<!--描述使用報表插件産生報表的規範,特定的maven 插件能輸出相應的定制和配置報表. -->  
<!--當使用者執行“mvn site”,這些報表就會運作,在頁面導航欄能看到所有報表的連結。 -->  
<reporting>  
  
    <!--true,則網站不包括預設的報表。這包括“項目資訊”菜單中的報表。 -->  
    <excludeDefaults />  
  
    <!--所有産生的報表存放到哪裡。預設值是${project.build.directory}/site。 -->  
    <outputDirectory />  
  
    <!--使用的報表插件和他們的配置。 -->  
    <plugins>  
  
        <plugin>  
            <groupId />  
            <artifactId />  
            <version />  
            <inherited />  
            <configuration>  
                <links>  
                    <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>  
                </links>  
            </configuration>  
            <!--一組報表的多重規範,每個規範可能有不同的配置。 -->  
            <!--一個規範(報表集)對應一個執行目标 。例如,有1,2,3,4,5,6,7,8,9個報表。 -->  
            <!--1,2,5構成A報表集,對應一個執行目标。2,5,8構成B報表集,對應另一個執行目标 -->  
            <reportSets>  
  
                <!--表示報表的一個集合,以及産生該集合的配置 -->  
                <reportSet>  
  
                    <!--報表集合的唯一辨別符,POM繼承時用到 -->  
                    <id>sunlink</id>  
  
                    <!--産生報表集合時,被使用的報表的配置 -->  
                    <configuration />  
  
                    <!--配置是否被繼承到子POMs -->  
                    <inherited />  
  
                    <!--這個集合裡使用到哪些報表 -->  
                    <reports>  
                        <report>javadoc</report>  
                    </reports>  
  
                </reportSet>  
  
            </reportSets>  
  
        </plugin>  
  
    </plugins>  
  
</reporting> 
           

環境配置

<!--項目的問題管理系統(Bugzilla, Jira, Scarab,或任何你喜歡的問題管理系統)的名稱和URL,本例為 jira -->  
<issueManagement>  
  
    <!--問題管理系統(例如jira)的名字, -->  
    <system> jira </system>  
  
    <!--該項目使用的問題管理系統的URL -->  
    <url> http://jira.clf.com/</url>  
  
</issueManagement>  
  
<!--項目持續內建資訊 -->  
<ciManagement>  
  
    <!--持續內建系統的名字,例如continuum -->  
    <system />  
  
    <!--該項目使用的持續內建系統的URL(如果持續內建系統有web接口的話)。 -->  
    <url />  
  
    <!--建構完成時,需要通知的開發者/使用者的配置項。包括被通知者資訊和通知條件(錯誤,失敗,成功,警告) -->  
    <notifiers>  
  
        <!--配置一種方式,當建構中斷時,以該方式通知使用者/開發者 -->  
        <notifier>  
  
            <!--傳送通知的途徑 -->  
            <type />  
  
            <!--發生錯誤時是否通知 -->  
            <sendOnError />  
  
            <!--建構失敗時是否通知 -->  
            <sendOnFailure />  
  
            <!--建構成功時是否通知 -->  
            <sendOnSuccess />  
  
            <!--發生警告時是否通知 -->  
            <sendOnWarning />  
  
            <!--不贊成使用。通知發送到哪裡 -->  
            <address />  
  
            <!--擴充配置項 -->  
            <configuration />  
  
        </notifier>  
  
    </notifiers>  
  
</ciManagement>
           

項目資訊配置

<!--項目的名稱, Maven産生的文檔用 -->  
<name>banseon-maven </name>  
  
<!--項目首頁的URL, Maven産生的文檔用 -->  
<url>http://www.clf.com/ </url>  
  
<!--項目的較長的描述, Maven 産生的文檔用。 當這個元素能夠用HTML格式描述時 -->  
<!--(例如,CDATA中的文本會被解析器忽略,就可以包含HTML标簽),不鼓勵使用純文字描述。 -->  
<!-- 如果你需要修改産生的web站點的索引頁面,你應該修改你自己的索引頁檔案,而不是調整這裡的文檔。 -->  
<description>A maven project to study maven. </description>  
  
<!--描述了這個項目建構環境中的前提條件。 -->  
<prerequisites>  
  
    <!--建構該項目或使用該插件所需要的Maven的最低版本 -->  
    <maven />  
  
</prerequisites>  
  
<!--項目建立年份,4位數字。當産生版權資訊時需要使用這個值。 -->  
<inceptionYear />  
  
<!--項目相關郵件清單資訊 -->  
<mailingLists>  
  
    <!--該元素描述了項目相關的所有郵件清單。自動産生的網站引用這些資訊。 -->  
    <mailingList>  
  
        <!--郵件的名稱 -->  
        <name> Demo </name>  
  
        <!--發送郵件的位址或連結,如果是郵件位址,建立文檔時,mailto: 連結會被自動建立 -->  
        <post> [email protected]</post>  
  
        <!--訂閱郵件的位址或連結,如果是郵件位址,建立文檔時,mailto: 連結會被自動建立 -->  
        <subscribe> [email protected]</subscribe>  
  
        <!--取消訂閱郵件的位址或連結,如果是郵件位址,建立文檔時,mailto: 連結會被自動建立 -->  
        <unsubscribe> [email protected]</unsubscribe>  
  
        <!--你可以浏覽郵件資訊的URL -->  
        <archive> http:/hi.clf.com/</archive>  
  
    </mailingList>  
  
</mailingLists>  
  
<!--項目開發者清單 -->  
<developers>  
  
    <!--某個項目開發者的資訊 -->  
    <developer>  
  
        <!--SCM裡項目開發者的唯一辨別符 -->  
        <id> HELLO WORLD </id>  
  
        <!--項目開發者的全名 -->  
        <name> banseon </name>  
  
        <!--項目開發者的email -->  
        <email> [email protected]</email>  
  
        <!--項目開發者的首頁的URL -->  
        <url />  
  
        <!--項目開發者在項目中扮演的角色,角色元素描述了各種角色 -->  
        <roles>  
            <role> Project Manager</role>  
            <role>Architect </role>  
        </roles>  
  
        <!--項目開發者所屬組織 -->  
        <organization> demo</organization>  
  
        <!--項目開發者所屬組織的URL -->  
        <organizationUrl>http://hi.clf.com/ </organizationUrl>  
  
        <!--項目開發者屬性,如即時消息如何處理等 -->  
        <properties>  
            <dept> No </dept>  
        </properties>  
  
        <!--項目開發者所在時區, -11到12範圍内的整數。 -->  
        <timezone> -5</timezone>  
  
    </developer>  
  
</developers>  
  
<!--項目的其他貢獻者清單 -->  
<contributors>  
  
    <!--項目的其他貢獻者。參見developers/developer元素 -->  
    <contributor>  
        <name />  
        <email />  
        <url />  
        <organization />  
        <organizationUrl />  
        <roles />  
        <timezone />  
        <properties />  
    </contributor>  
  
</contributors>  
  
<!--該元素描述了項目所有License清單。應該隻列出該項目的license清單,不要列出依賴項目的license清單。 -->  
<!--如果列出多個license,使用者可以選擇它們中的一個而不是接受所有license。 -->  
<licenses>  
  
    <!--描述了項目的license,用于生成項目的web站點的license頁面,其他一些報表和validation也會用到該元素。 -->  
    <license>  
  
        <!--license用于法律上的名稱 -->  
        <name> Apache 2 </name>  
  
        <!--官方的license正文頁面的URL -->  
        <url>http://www.clf.com/LICENSE-2.0.txt </url>  
  
        <!--項目分發的主要方式: repo,可以從Maven庫下載下傳 manual, 使用者必須手動下載下傳和安裝依賴 -->  
        <distribution> repo</distribution>  
  
        <!--關于license的補充資訊 -->  
        <comments> Abusiness-friendly OSS license </comments>  
  
    </license>  
  
</licenses>  
  
<!--SCM(Source Control Management)标簽允許你配置你的代碼庫,供Maven web站點和其它插件使用。 -->  
<scm>  
  
    <!--SCM的URL,該URL描述了版本庫和如何連接配接到版本庫。欲知詳情,請看SCMs提供的URL格式和清單。該連接配接隻讀。 -->  
    <connection>scm:svn:http://svn.baidu.com/banseon/maven/</connection>  
  
    <!--給開發者使用的,類似connection元素。即該連接配接不僅僅隻讀 -->  
    <developerConnection>scm:svn:http://svn.baidu.com/banseon/maven/  
    </developerConnection>  
  
    <!--目前代碼的标簽,在開發階段預設為HEAD -->  
    <tag />  
  
    <!--指向項目的可浏覽SCM庫(例如ViewVC或者Fisheye)的URL。 -->  
    <url> http://svn.baidu.com/banseon</url>  
  
</scm>  
  
<!--描述項目所屬組織的各種屬性。Maven産生的文檔用 -->  
<organization>  
  
    <!--組織的全名 -->  
    <name> demo </name>  
  
    <!--組織首頁的URL -->  
    <url> http://www.clf.com/</url>  
  
</organization>