作者:seyvoue
鏈接:http://www.reibang.com/p/8417a94c4d94
來源:簡書
<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>
<!-- 項目的全球唯一標識符,通常使用全限定的包名區(qū)分該項目和其他項目淫奔。并且構建時生成的路徑也是由此生成棕所, 如com.seyvoue.demo生成的相對路徑為:/com/seyvoue/demo-->
<groupId>com.seyvoue.demo</groupId>
<!-- 構件的標識符,它和 groupId 一起唯一標識一個構件嵌戈。換句話說,你不能有兩個不同的項目擁有同樣的 artifactId 和 groupId;在某個特定的 groupId 下噩凹,artifactId也必須是唯一的阳欲。-->
<artifactId>demo-maven</artifactId>
<!-- 項目當前版本舵盈,格式為:主版本.次版本.增量版本-限定版本號-->
<version>1.0.0-SNAPSHOT</version>
<!-- 項目產生的構件類型,例如 jar胸完、war书释、pom 等。插件可以創(chuàng)建他們自己的構件類型赊窥,所以前面列的不是全部構件類型-->
<packaging>jar</packaging>
<!-- 項目的名稱爆惧,Maven產生的文檔用-->
<name>project-demo</name>
<!-- 項目主頁的URL,Maven產生的文檔用-->
<url>http://demo.seyvoue.com</url>
<!-- 項目的詳細描述, Maven 產生的文檔用锨能。當這個元素能夠用HTML格式描述時(例如扯再,CDATA中的文本會被解析器忽略芍耘,就可以包含HTML標簽), 不鼓勵使用純文本描述熄阻。如果你需要修改產生的web站點的索引頁面斋竞,你應該修改你自己的索引頁文件,而不是調整這里的文檔秃殉。-->
<description>A demo of maven project to study maven.</description>
<parent>
<!--被繼承的父項目的構件標識符-->
<artifactId/>
<!--被繼承的父項目的全球唯一標識符-->
<groupId/>
<!--被繼承的父項目的版本-->
<version/>
<!-- 父項目的pom.xml文件的相對路徑坝初。相對路徑允許你選擇一個不同的路徑。默認值是../pom.xml钾军。Maven首先在構建當前項目的地方尋找父項目的pom鳄袍,其次在文件系統(tǒng)的這個位置(relativePath位置),然后在本地倉庫吏恭,最后在遠程倉庫尋找父項目的pom拗小。-->
<relativePath/>
</parent>
<!-- 繼承自該項目的所有子項目的默認依賴信息。這部分的依賴信息不會被立即解析,而是當子項目聲明一個依賴(必須描述group ID和 artifact ID信息)樱哼,如果group ID和artifact ID以外的一些信息沒有描述哀九,則通過group ID和artifact ID 匹配到這里的依賴,并使用這里的依賴信息搅幅。-->
<dependencyManagement>
<dependencies>
<!--參見dependencies/dependency元素-->
<dependency>
...
</dependency>
</dependencies>
</dependencyManagement>
<!--該元素描述了項目相關的所有依賴阅束。 這些依賴組成了項目構建過程中的一個個環(huán)節(jié)。它們自動從項目定義的倉庫中下載盏筐。要獲取更多信息围俘,請看項目依賴機制。-->
<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>
<!-- 依賴的分類器。分類器可以區(qū)分屬于同一個POM纬傲,但不同構建方式的構件满败。分類器名被附加到文件名的版本號后面。例如叹括,如果你想要構建兩個單獨的構件成 JAR算墨,一個使用Java 4編譯器,另一個使用Java 6編譯器汁雷,你就可以使用分類器來生成兩個單獨的JAR構件净嘀。-->
<classifier></classifier>
<!--依賴范圍。在項目發(fā)布過程中摔竿,幫助決定哪些構件被包括進來面粮。欲知詳情請參考依賴機制。
- compile :默認范圍继低,用于編譯
- provided:類似于編譯,但支持你期待jdk或者容器提供稍走,類似于classpath
- runtime: 在執(zhí)行時需要使用
- test: 用于test任務時使用
- system: 需要外在提供相應的元素袁翁。通過systemPath來取得
- systemPath: 僅用于范圍為system。提供相應的路徑
- optional: 當項目自身被依賴時婿脸,標注依賴是否傳遞粱胜。用于連續(xù)依賴時使用-->
<scope>test</scope>
<!--僅供system范圍使用。注意狐树,不鼓勵使用這個元素焙压,并且在新的版本中該元素可能被覆蓋掉。該元素為依賴規(guī)定了文件系統(tǒng)上的路徑抑钟。需要絕對路徑而不是相對路徑涯曲。推薦使用屬性匹配絕對路徑,例{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>
<!--模塊(有時稱作子項目) 被構建成項目的一部分。列出的每個模塊元素是指向該模塊的目錄的相對路徑-->
<modules>
<module>account-email</module>
<module>account-persist</module>
...
</modules>
<scm>
<!--SCM的URL,該URL描述了版本庫和如何連接到版本庫喘垂。欲知詳情甜刻,請看SCMs提供的URL格式和列表绍撞。該連接只讀。-->
<connection>
scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)
</connection>
<!--給開發(fā)者使用的得院,類似connection元素傻铣。即該連接不僅僅只讀-->
<developerConnection>
scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk
</developerConnection>
<!--當前代碼的標簽,在開發(fā)階段默認為HEAD-->
<tag/>
<!--指向項目的可瀏覽SCM庫(例如ViewVC或者Fisheye)的URL祥绞。-->
<url>http://svn.baidu.com/banseon</url>
</scm>
<!--項目分發(fā)信息非洲,在執(zhí)行mvn deploy后表示要發(fā)布的位置。有了這些信息就可以把網(wǎng)站部署到遠程服務器或者把構件部署到遠程倉庫蜕径。-->
<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>
<!--部署項目的網(wǎng)站需要的信息-->
<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>
<!-- 給出該構件在遠程倉庫的狀態(tài)。不得在本地項目中設置該元素蒂教,因為這是工具自動更新的巍举。有效的值有:none(默認),converted(倉庫管理員從 Maven 1 POM轉換過來)凝垛,partner(直接從伙伴Maven 2倉庫同步過來)懊悯,deployed(從Maven 2實例部 署),verified(被核實時正確的和最終的)梦皮。-->
<status/>
</distributionManagement>
<build>
<!--當項目沒有規(guī)定目標(Maven2 叫做階段)時的默認值-->
<defaultGoal>install</defaultGoal>
<!--build目標文件的存放目錄炭分,默認在 ${basedir}/target 目錄-->
<directory>${basedir}/target</directory>
<finalName>${artifactId}-${version}</finalName>
<filters>
<filter>filters/filter1.properties</filter>
</filters>
<!--這個元素描述了項目相關的所有資源路徑列表,例如和項目相關的屬性文件剑肯,這些資源被包含在最終的打包文件里捧毛。-->
<resources>
<!--這個元素描述了項目相關或測試相關的所有資源路徑-->
<resource>
<!-- 描述了資源的目標路徑。該路徑相對target/classes目錄(例如${project.build.outputDirectory})。舉個例 子呀忧,如果你想資源在特定的包里( org.apache.maven.message师痕,你就必須該元素設置為org/apache/maven /messages。然而而账,如果你只是想把資源放到源碼目錄結構里胰坟,就不需要該配置。-->
<targetPath/>
<!--是否使用參數(shù)值代替參數(shù)名泞辐。參數(shù)值取自properties元素或者文件里配置的屬性笔横,文件在filters元素里列出。-->
<filtering/>
<!--描述存放資源的目錄咐吼,該路徑相對POM路徑-->
<directory/>
<!--包含的模式列表吹缔,例如**/*.xml.-->
<includes/>
<!--排除的模式列表,例如**/*.xml-->
<excludes/>
</resource>
</resources>
<!--這個元素描述了單元測試相關的所有資源路徑锯茄,例如和單元測試相關的屬性文件厢塘。-->
<testResources>
<!--這個元素描述了測試相關的所有資源路徑,參見build/resources/resource元素的說明-->
<testResource>
<targetPath/>
<filtering/>
<directory/>
<includes/>
<excludes/>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<tagBase>${git.conn}</tagBase>
<branchBase>${git.conn}</branchBase>
<username>${git.username}</username>
<password>${git.password}</password>
</configuration>
</plugin>
...
</plugins>
<!--子項目可以引用的默認插件信息撇吞。該插件配置項直到被引用時才會被解析或綁定到生命周期俗冻。給定插件的任何本地配置都會覆蓋這里的配置-->
<pluginManagement>
<plugins>
...
</plugins>
</pluginManagement>
</build>
</project>