天天看點

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.0http://maven.apache.org/maven-v4_0_0.xsd">
	<!--父項目的坐标。如果項目中沒有規定某個元素的值,那麼父項目中的對應值即為項目的預設值。 坐标包括group ID,artifact ID和 
		version。 -->
	<parent>
		<!--被繼承的父項目的構件辨別符 -->
		<artifactId />
		<!--被繼承的父項目的全球唯一辨別符 -->
		<groupId />
		<!--被繼承的父項目的版本 -->
		<version />
		<!--父項目的pom.xml檔案的相對路徑。相對路徑允許你選擇一個不同的路徑。預設值是../pom.xml。Maven首先在建構目前項目的地方尋找父項目的pom,其次在檔案系統的這個位置(relativePath位置),然後在本地倉庫,最後在遠端倉庫尋找父項目的pom。 -->
		<relativePath />
	</parent>
	<!--聲明項目描述符遵循哪一個POM模型版本。模型本身的版本很少改變,雖然如此,但它仍然是必不可少的,這是為了當Maven引入了新的特性或者其他模型變更的時候,確定穩定性。 -->
	<modelVersion>4.0.0</modelVersion>
	<!--項目的全球唯一辨別符,通常使用全限定的包名區分該項目和其他項目。并且建構時生成的路徑也是由此生成, 如com.mycompany.app生成的相對路徑為:/com/mycompany/app -->
	<groupId>asia.banseon</groupId>
	<!--構件的辨別符,它和group ID一起唯一辨別一個構件。換句話說,你不能有兩個不同的項目擁有同樣的artifact ID和groupID;在某個特定的group 
		ID下,artifact ID也必須是唯一的。構件是項目産生的或使用的一個東西,Maven為項目産生的構件包括:JARs,源碼,二進制釋出和WARs等。 -->
	<artifactId>banseon-maven2</artifactId>
	<!--項目産生的構件類型,例如jar、war、ear、pom。插件可以建立他們自己的構件類型,是以前面列的不是全部構件類型 -->
	<packaging>jar</packaging>
	<!--項目目前版本,格式為:主版本.次版本.增量版本-限定版本号 -->
	<version>1.0-SNAPSHOT</version>
	<!--項目的名稱, Maven産生的文檔用 -->
	<name>banseon-maven</name>
	<!--項目首頁的URL, Maven産生的文檔用 -->
	<url>http://www.baidu.com/banseon</url>
	<!--項目的較長的描述, Maven 産生的文檔用。 當這個元素能夠用HTML格式描述時(例如,CDATA中的文本會被解析器忽略,就可以包含HTML标簽), 
		不鼓勵使用純文字描述。如果你需要修改産生的web站點的索引頁面,你應該修改你自己的索引頁檔案,而不是調整這裡的文檔。 -->
	<description>A maven project to study maven.</description>
	<!--描述了這個項目建構環境中的前提條件。 -->
	<prerequisites>
		<!--建構該項目或使用該插件所需要的Maven的最低版本 -->
		<maven />
	</prerequisites>
	<!--項目的問題管理系統(Bugzilla, Jira, Scarab,或任何你喜歡的問題管理系統)的名稱和URL,本例為 jira -->
	<issueManagement>
		<!--問題管理系統(例如jira)的名字, -->
		<system>jira</system>
		<!--該項目使用的問題管理系統的URL -->
		<url>http://jira.baidu.com/banseon</url>
	</issueManagement>
	<!--項目持續內建資訊 -->
	<ciManagement>
		<!--持續內建系統的名字,例如continuum -->
		<system />
		<!--該項目使用的持續內建系統的URL(如果持續內建系統有web接口的話)。 -->
		<url />
		<!--建構完成時,需要通知的開發者/使用者的配置項。包括被通知者資訊和通知條件(錯誤,失敗,成功,警告) -->
		<notifiers>
			<!--配置一種方式,當建構中斷時,以該方式通知使用者/開發者 -->
			<notifier>
				<!--傳送通知的途徑 -->
				<type />
				<!--發生錯誤時是否通知 -->
				<sendOnError />
				<!--建構失敗時是否通知 -->
				<sendOnFailure />
				<!--建構成功時是否通知 -->
				<sendOnSuccess />
				<!--發生警告時是否通知 -->
				<sendOnWarning />
				<!--不贊成使用。通知發送到哪裡 -->
				<address />
				<!--擴充配置項 -->
				<configuration />
			</notifier>
		</notifiers>
	</ciManagement>
	<!--項目建立年份,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.baidu.com/banseon/demo/dev/</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.baidu.com/banseon</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.baidu.com/banseon/LICENSE-2.0.txt</url>
			<!--項目分發的主要方式: repo,可以從Maven庫下載下傳 manual, 使用者必須手動下載下傳和安裝依賴 -->
			<distribution>repo</distribution>
			<!--關于license的補充資訊 -->
			<comments>A business-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/banseon/banseon-maven2-trunk(dao-trunk)
		</connection>
		<!--給開發者使用的,類似connection元素。即該連接配接不僅僅隻讀 -->
		<developerConnection>
			scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk
		</developerConnection>
		<!--目前代碼的标簽,在開發階段預設為HEAD -->
		<tag />
		<!--指向項目的可浏覽SCM庫(例如ViewVC或者Fisheye)的URL。 -->
		<url>http://svn.baidu.com/banseon</url>
	</scm>
	<!--描述項目所屬組織的各種屬性。Maven産生的文檔用 -->
	<organization>
		<!--組織的全名 -->
		<name>demo</name>
		<!--組織首頁的URL -->
		<url>http://www.baidu.com/banseon</url>
	</organization>
	<!--建構項目需要的資訊 -->
	<build>
		<!--該元素設定了項目源碼目錄,當建構項目的時候,建構系統會編譯目錄裡的源碼。該路徑是相對于pom.xml的相對路徑。 -->
		<sourceDirectory />
		<!--該元素設定了項目腳本源碼目錄,該目錄和源碼目錄不同:絕大多數情況下,該目錄下的内容 會被拷貝到輸出目錄(因為腳本是被解釋的,而不是被編譯的)。 -->
		<scriptSourceDirectory />
		<!--該元素設定了項目單元測試使用的源碼目錄,當測試項目的時候,建構系統會編譯目錄裡的源碼。該路徑是相對于pom.xml的相對路徑。 -->
		<testSourceDirectory />
		<!--被編譯過的應用程式class檔案存放的目錄。 -->
		<outputDirectory />
		<!--被編譯過的測試class檔案存放的目錄。 -->
		<testOutputDirectory />
		<!--使用來自該項目的一系列建構擴充 -->
		<extensions>
			<!--描述使用到的建構擴充。 -->
			<extension>
				<!--建構擴充的groupId -->
				<groupId />
				<!--建構擴充的artifactId -->
				<artifactId />
				<!--建構擴充的版本 -->
				<version />
			</extension>
		</extensions>
		<!--當項目沒有規定目标(Maven2 叫做階段)時的預設值 -->
		<defaultGoal />
		<!--這個元素描述了項目相關的所有資源路徑清單,例如和項目相關的屬性檔案,這些資源被包含在最終的打封包件裡。 -->
		<resources>
			<!--這個元素描述了項目相關或測試相關的所有資源路徑 -->
			<resource>
				<!--描述了資源的目标路徑。該路徑相對target/classes目錄(例如${project.build.outputDirectory})。舉個例子,如果你想資源在特定的包裡(org.apache.maven.messages),你就必須該元素設定為org/apache/maven/messages。然而,如果你隻是想把資源放到源碼目錄結構裡,就不需要該配置。 -->
				<targetPath />
				<!--是否使用參數值代替參數名。參數值取自properties元素或者檔案裡配置的屬性,檔案在filters元素裡列出。 -->
				<filtering />
				<!--描述存放資源的目錄,該路徑相對POM路徑 -->
				<directory />
				<!--包含的模式清單,例如**/*.xml. -->
				<includes />
				<!--排除的模式清單,例如**/*.xml -->
				<excludes />
			</resource>
		</resources>
		<!--這個元素描述了單元測試相關的所有資源路徑,例如和單元測試相關的屬性檔案。 -->
		<testResources>
			<!--這個元素描述了測試相關的所有資源路徑,參見build/resources/resource元素的說明 -->
			<testResource>
				<targetPath />
				<filtering />
				<directory />
				<includes />
				<excludes />
			</testResource>
		</testResources>
		<!--建構産生的所有檔案存放的目錄 -->
		<directory />
		<!--産生的構件的檔案名,預設值是${artifactId}-${version}。 -->
		<finalName />
		<!--當filtering開關打開時,使用到的過濾器屬性檔案清單 -->
		<filters />
		<!--子項目可以引用的預設插件資訊。該插件配置項直到被引用時才會被解析或綁定到生命周期。給定插件的任何本地配置都會覆寫這裡的配置 -->
		<pluginManagement>
			<!--使用的插件清單 。 -->
			<plugins>
				<!--plugin元素包含描述插件所需要的資訊。 -->
				<plugin>
					<!--插件在倉庫裡的group ID -->
					<groupId />
					<!--插件在倉庫裡的artifact ID -->
					<artifactId />
					<!--被使用的插件的版本(或版本範圍) -->
					<version />
					<!--是否從該插件下載下傳Maven擴充(例如打包和類型處理器),由于性能原因,隻有在真需要下載下傳時,該元素才被設定成enabled。 -->
					<extensions />
					<!--在建構生命周期中執行一組目标的配置。每個目标可能有不同的配置。 -->
					<executions>
						<!--execution元素包含了插件執行需要的資訊 -->
						<execution>
							<!--執行目标的辨別符,用于辨別建構過程中的目标,或者比對繼承過程中需要合并的執行目标 -->
							<id />
							<!--綁定了目标的建構生命周期階段,如果省略,目标會被綁定到源資料裡配置的預設階段 -->
							<phase />
							<!--配置的執行目标 -->
							<goals />
							<!--配置是否被傳播到子POM -->
							<inherited />
							<!--作為DOM對象的配置 -->
							<configuration />
						</execution>
					</executions>
					<!--項目引入插件所需要的額外依賴 -->
					<dependencies>
						<!--參見dependencies/dependency元素 -->
						<dependency>
							......
						</dependency>
					</dependencies>
					<!--任何配置是否被傳播到子項目 -->
					<inherited />
					<!--作為DOM對象的配置 -->
					<configuration />
				</plugin>
			</plugins>
		</pluginManagement>
		<!--使用的插件清單 -->
		<plugins>
			<!--參見build/pluginManagement/plugins/plugin元素 -->
			<plugin>
				<groupId />
				<artifactId />
				<version />
				<extensions />
				<executions>
					<execution>
						<id />
						<phase />
						<goals />
						<inherited />
						<configuration />
					</execution>
				</executions>
				<dependencies>
					<!--參見dependencies/dependency元素 -->
					<dependency>
						......
					</dependency>
				</dependencies>
				<goals />
				<inherited />
				<configuration />
			</plugin>
		</plugins>
	</build>
	<!--在列的項目建構profile,如果被激活,會修改建構處理 -->
	<profiles>
		<!--根據環境參數或指令行參數激活某個建構處理 -->
		<profile>
			<!--建構配置的唯一辨別符。即用于指令行激活,也用于在繼承時合并具有相同辨別符的profile。 -->
			<id />
			<!--自動觸發profile的條件邏輯。Activation是profile的開啟鑰匙。profile的力量來自于它 能夠在某些特定的環境中自動使用某些特定的值;這些環境通過activation元素指定。activation元素并不是激活profile的唯一方式。 -->
			<activation>
				<!--profile預設是否激活的标志 -->
				<activeByDefault />
				<!--當比對的jdk被檢測到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有版本不是以1.4開頭的JDK。 -->
				<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>
			<!--建構項目所需要的資訊。參見build元素 -->
			<build>
				<defaultGoal />
				<resources>
					<resource>
						<targetPath />
						<filtering />
						<directory />
						<includes />
						<excludes />
					</resource>
				</resources>
				<testResources>
					<testResource>
						<targetPath />
						<filtering />
						<directory />
						<includes />
						<excludes />
					</testResource>
				</testResources>
				<directory />
				<finalName />
				<filters />
				<pluginManagement>
					<plugins>
						<!--參見build/pluginManagement/plugins/plugin元素 -->
						<plugin>
							<groupId />
							<artifactId />
							<version />
							<extensions />
							<executions>
								<execution>
									<id />
									<phase />
									<goals />
									<inherited />
									<configuration />
								</execution>
							</executions>
							<dependencies>
								<!--參見dependencies/dependency元素 -->
								<dependency>
									......
								</dependency>
							</dependencies>
							<goals />
							<inherited />
							<configuration />
						</plugin>
					</plugins>
				</pluginManagement>
				<plugins>
					<!--參見build/pluginManagement/plugins/plugin元素 -->
					<plugin>
						<groupId />
						<artifactId />
						<version />
						<extensions />
						<executions>
							<execution>
								<id />
								<phase />
								<goals />
								<inherited />
								<configuration />
							</execution>
						</executions>
						<dependencies>
							<!--參見dependencies/dependency元素 -->
							<dependency>
								......
							</dependency>
						</dependencies>
						<goals />
						<inherited />
						<configuration />
					</plugin>
				</plugins>
			</build>
			<!--子產品(有時稱作子項目) 被建構成項目的一部分。列出的每個子產品元素是指向該子產品的目錄的相對路徑 -->
			<modules />
			<!--發現依賴和擴充的遠端倉庫清單。 -->
			<repositories>
				<!--參見repositories/repository元素 -->
				<repository>
					<releases>
						<enabled />
						<updatePolicy />
						<checksumPolicy />
					</releases>
					<snapshots>
						<enabled />
						<updatePolicy />
						<checksumPolicy />
					</snapshots>
					<id />
					<name />
					<url />
					<layout />
				</repository>
			</repositories>
			<!--發現插件的遠端倉庫清單,這些插件用于建構和報表 -->
			<pluginRepositories>
				<!--包含需要連接配接到遠端插件倉庫的資訊.參見repositories/repository元素 -->
				<pluginRepository>
					<releases>
						<enabled />
						<updatePolicy />
						<checksumPolicy />
					</releases>
					<snapshots>
						<enabled />
						<updatePolicy />
						<checksumPolicy />
					</snapshots>
					<id />
					<name />
					<url />
					<layout />
				</pluginRepository>
			</pluginRepositories>
			<!--該元素描述了項目相關的所有依賴。 這些依賴組成了項目建構過程中的一個個環節。它們自動從項目定義的倉庫中下載下傳。要擷取更多資訊,請看項目依賴機制。 -->
			<dependencies>
				<!--參見dependencies/dependency元素 -->
				<dependency>
					......
				</dependency>
			</dependencies>
			<!--不贊成使用. 現在Maven忽略該元素. -->
			<reports />
			<!--該元素包括使用報表插件産生報表的規範。當使用者執行“mvn site”,這些報表就會運作。 在頁面導航欄能看到所有報表的連結。參見reporting元素 -->
			<reporting>
				......
			</reporting>
			<!--參見dependencyManagement元素 -->
			<dependencyManagement>
				<dependencies>
					<!--參見dependencies/dependency元素 -->
					<dependency>
						......
					</dependency>
				</dependencies>
			</dependencyManagement>
			<!--參見distributionManagement元素 -->
			<distributionManagement>
				......
			</distributionManagement>
			<!--參見properties元素 -->
			<properties />
		</profile>
	</profiles>
	<!--子產品(有時稱作子項目) 被建構成項目的一部分。列出的每個子產品元素是指向該子產品的目錄的相對路徑 -->
	<modules />
	<!--發現依賴和擴充的遠端倉庫清單。 -->
	<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就可以在每個單獨的倉庫中,為每種類型的構件采取不同的政策。例如,可能有人會決定隻為開發目的開啟對快照版本下載下傳的支援。參見repositories/repository/releases元素 -->
			<snapshots>
				<enabled />
				<updatePolicy />
				<checksumPolicy />
			</snapshots>
			<!--遠端倉庫唯一辨別符。可以用來比對在settings.xml檔案裡配置的遠端倉庫 -->
			<id>banseon-repository-proxy</id>
			<!--遠端倉庫名稱 -->
			<name>banseon-repository-proxy</name>
			<!--遠端倉庫URL,按protocol://hostname/path形式 -->
			<url>http://192.168.1.169:9999/repository/</url>
			<!--用于定位和排序構件的倉庫布局類型-可以是default(預設)或者legacy(遺留)。Maven 2為其倉庫提供了一個預設的布局;然而,Maven 
				1.x有一種不同的布局。我們可以使用該元素指定布局是default(預設)還是legacy(遺留)。 -->
			<layout>default</layout>
		</repository>
	</repositories>
	<!--發現插件的遠端倉庫清單,這些插件用于建構和報表 -->
	<pluginRepositories>
		<!--包含需要連接配接到遠端插件倉庫的資訊.參見repositories/repository元素 -->
		<pluginRepository>
			......
		</pluginRepository>
	</pluginRepositories>

	<!--該元素描述了項目相關的所有依賴。 這些依賴組成了項目建構過程中的一個個環節。它們自動從項目定義的倉庫中下載下傳。要擷取更多資訊,請看項目依賴機制。 -->
	<dependencies>
		<dependency>
			<!--依賴的group ID -->
			<groupId>org.apache.maven</groupId>
			<!--依賴的artifact ID -->
			<artifactId>maven-artifact</artifactId>
			<!--依賴的版本号。 在Maven 2裡, 也可以配置成版本号的範圍。 -->
			<version>3.8.1</version>
			<!--依賴類型,預設類型是jar。它通常表示依賴的檔案的擴充名,但也有例外。一個類型可以被映射成另外一個擴充名或分類器。類型經常和使用的打包方式對應,盡管這也有例外。一些類型的例子:jar,war,ejb-client和test-jar。如果設定extensions為 
				true,就可以在plugin裡定義新的類型。是以前面的類型的例子不完整。 -->
			<type>jar</type>
			<!--依賴的分類器。分類器可以區分屬于同一個POM,但不同建構方式的構件。分類器名被附加到檔案名的版本号後面。例如,如果你想要建構兩個單獨的構件成JAR,一個使用Java 
				1.4編譯器,另一個使用Java 6編譯器,你就可以使用分類器來生成兩個單獨的JAR構件。 -->
			<classifier></classifier>
			<!--依賴範圍。在項目釋出過程中,幫助決定哪些構件被包括進來。欲知詳情請參考依賴機制。 - compile :預設範圍,用于編譯 - provided:類似于編譯,但支援你期待jdk或者容器提供,類似于classpath 
				- runtime: 在執行時需要使用 - test: 用于test任務時使用 - system: 需要外在提供相應的元素。通過systemPath來取得 
				- systemPath: 僅用于範圍為system。提供相應的路徑 - optional: 當項目自身被依賴時,标注依賴是否傳遞。用于連續依賴時使用 -->
			<scope>test</scope>
			<!--僅供system範圍使用。注意,不鼓勵使用這個元素,并且在新的版本中該元素可能被覆寫掉。該元素為依賴規定了檔案系統上的路徑。需要絕對路徑而不是相對路徑。推薦使用屬性比對絕對路徑,例如${java.home}。 -->
			<systemPath></systemPath>
			<!--當計算傳遞依賴時, 從依賴構件清單裡,列出被排除的依賴構件集。即告訴maven你隻依賴指定的項目,不依賴項目的依賴。此元素主要用于解決版本沖突問題 -->
			<exclusions>
				<exclusion>
					<artifactId>spring-core</artifactId>
					<groupId>org.springframework</groupId>
				</exclusion>
			</exclusions>
			<!--可選依賴,如果你在項目B中把C依賴聲明為可選,你就需要在依賴于B的項目(例如項目A)中顯式的引用對C的依賴。可選依賴阻斷依賴的傳遞性。 -->
			<optional>true</optional>
		</dependency>
	</dependencies>
	<!--不贊成使用. 現在Maven忽略該元素. -->
	<reports></reports>
	<!--該元素描述使用報表插件産生報表的規範。當使用者執行“mvn site”,這些報表就會運作。 在頁面導航欄能看到所有報表的連結。 -->
	<reporting>
		<!--true,則,網站不包括預設的報表。這包括“項目資訊”菜單中的報表。 -->
		<excludeDefaults />
		<!--所有産生的報表存放到哪裡。預設值是${project.build.directory}/site。 -->
		<outputDirectory />
		<!--使用的報表插件和他們的配置。 -->
		<plugins>
			<!--plugin元素包含描述報表插件需要的資訊 -->
			<plugin>
				<!--報表插件在倉庫裡的group ID -->
				<groupId />
				<!--報表插件在倉庫裡的artifact ID -->
				<artifactId />
				<!--被使用的報表插件的版本(或版本範圍) -->
				<version />
				<!--任何配置是否被傳播到子項目 -->
				<inherited />
				<!--報表插件的配置 -->
				<configuration />
				<!--一組報表的多重規範,每個規範可能有不同的配置。一個規範(報表集)對應一個執行目标 。例如,有1,2,3,4,5,6,7,8,9個報表。1,2,5構成A報表集,對應一個執行目标。2,5,8構成B報表集,對應另一個執行目标 -->
				<reportSets>
					<!--表示報表的一個集合,以及産生該集合的配置 -->
					<reportSet>
						<!--報表集合的唯一辨別符,POM繼承時用到 -->
						<id />
						<!--産生報表集合時,被使用的報表的配置 -->
						<configuration />
						<!--配置是否被繼承到子POMs -->
						<inherited />
						<!--這個集合裡使用到哪些報表 -->
						<reports />
					</reportSet>
				</reportSets>
			</plugin>
		</plugins>
	</reporting>
	<!--繼承自該項目的所有子項目的預設依賴資訊。這部分的依賴資訊不會被立即解析,而是當子項目聲明一個依賴(必須描述group ID和artifact 
		ID資訊),如果group ID和artifact ID以外的一些資訊沒有描述,則通過group ID和artifact ID比對到這裡的依賴,并使用這裡的依賴資訊。 -->
	<dependencyManagement>
		<dependencies>
			<!--參見dependencies/dependency元素 -->
			<dependency>
				......
			</dependency>
		</dependencies>
	</dependencyManagement>
	<!--項目分發資訊,在執行mvn deploy後表示要釋出的位置。有了這些資訊就可以把網站部署到遠端伺服器或者把構件部署到遠端倉庫。 -->
	<distributionManagement>
		<!--部署項目産生的構件到遠端倉庫需要的資訊 -->
		<repository>
			<!--是配置設定給快照一個唯一的版本号(由時間戳和建構流水号)?還是每次都使用相同的版本号?參見repositories/repository元素 -->
			<uniqueVersion />
			<id>banseon-maven2</id>
			<name>banseon maven2</name>
			<url>file://${basedir}/target/deploy</url>
			<layout />
		</repository>
		<!--構件的快照部署到哪裡?如果沒有配置該元素,預設部署到repository元素配置的倉庫,參見distributionManagement/repository元素 -->
		<snapshotRepository>
			<uniqueVersion />
			<id>banseon-maven2</id>
			<name>Banseon-maven2 Snapshot Repository</name>
			<url>scp://svn.baidu.com/banseon:/usr/local/maven-snapshot</url>
			<layout />
		</snapshotRepository>
		<!--部署項目的網站需要的資訊 -->
		<site>
			<!--部署位置的唯一辨別符,用來比對站點和settings.xml檔案裡的配置 -->
			<id>banseon-site</id>
			<!--部署位置的名稱 -->
			<name>business api website</name>
			<!--部署位置的URL,按protocol://hostname/path形式 -->
			<url>
				scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
			</url>
		</site>
		<!--項目下載下傳頁面的URL。如果沒有該元素,使用者應該參考首頁。使用該元素的原因是:幫助定位那些不在倉庫裡的構件(由于license限制)。 -->
		<downloadUrl />
		<!--如果構件有了新的group ID和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>
	<!--以值替代名稱,Properties可以在整個POM中使用,也可以作為觸發條件(見settings.xml配置檔案裡activation元素的說明)。格式是<name>value</name>。 -->
	<properties />
</project>

<!--參考文獻: http://maven.apache.org/ref/2.0.9/maven-model/maven.html -->
           

繼續閱讀