簡介:
使用IDEA新建立Maven Java項目後,項目根目錄下有一個pom.xml檔案,pom檔案包含了項目的基本資訊,用來設定項目的項目依賴、插件、項目版本等資訊。
執行任務或目标時,Maven 會在目前目錄中查找并讀取 POM,擷取所需的配置資訊,然後執行目标。
POM檔案中可以指定以下配置資訊:
- 項目依賴
- 插件
- 執行目标
- 項目建構 profile
- 項目版本
- 項目開發者清單
- 相關郵件清單資訊
pom檔案中的預設配置
每個pom檔案必需的元素有根元素:project 元素和三個必需字段:工程組的辨別groupId,工程的名稱artifactId,版本資訊version,如下:
<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><!--maven2.0必須是這樣寫,現在是maven2唯一支援的版本-->
<groupId>org.example</groupId -->項目唯一辨別
<artifactId>datasec-glory-jdbc-driver</artifactId -->項目名稱
<version>1.0-SNAPSHOT</version-->項目版本
</project>
pom檔案中的依賴dependencies
Dependencies字段用來聲明項目依賴的其他項目群組件,有三要素唯一辨別其他項目群組件。需要是maven中心包管理的項目或元件,否則需要自己部署,或者通過設定scope為system并指定路徑,将依賴項目包含進來。
有時候各個項目多層依賴,如A依賴B,B依賴C,如果在A中依賴B,預設A依賴C,如果A不想依賴C,可以用exclusions将C排除。
<!--該元素描述了項目相關的所有依賴。 這些依賴自動從項目定義的倉庫中下載下傳 -->
<dependencies>
<dependency>
<!------------------- 依賴坐标 ----------------->
<!--依賴項目的坐标三元素:groupId + artifactId + version -->
<groupId>com.jdcloud.security</groupId>
<artifactId>datasec-glory-jdbc-driver</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.jdcloud.security</groupId>
<artifactId>datasec-glory-jdbc-test</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
遠端倉庫清單
遠端倉庫清單的配置,包括依賴和擴充的遠端倉庫配置,以及插件的遠端倉庫配置。在本地倉庫找不到的情況下,maven下載下傳依賴、擴充和插件就是從這裡配置的遠端倉庫中進行下載下傳。
需要注意的是release和snapshot兩者的差別。release是穩定版本,一經釋出不再修改,想釋出修改後的項目,隻能更新項目版本再進行釋出;snapshot是不穩定的,一個snapshot的版本可以不斷改變。項目在開發期間一般會使用snapshot,更友善進行頻繁的代碼更新;一旦釋出到外部,或者開發基本完成,代碼疊代不再頻繁,則推薦使用release。
<!--發現依賴和擴充的遠端倉庫清單。 -->
<repositories>
<repository>
<!--包含需要連接配接到遠端倉庫的資訊 -->
<snapshots> <!-- 有了releases和snapshots這兩組配置,就可以在每個單獨的倉庫中,為每種類型的構件采取不同的政策 -->
<enabled>false</enabled> <!--值為true或者false,表示該倉庫是否為下載下傳某種類型構件(釋出版,快照版)開啟。 -->
</snapshots>
<id>central</id> <!--遠端倉庫唯一辨別符。可以用來比對在settings.xml檔案裡配置的遠端倉庫 -->
<name>libs-releases</nam <!--遠端倉庫名稱 -->
<url>http://artifactory.jd.com/libs-releases</url> <!--遠端倉庫URL,按protocol://hostname/path形式 -->
</repository>
<repository>
<snapshots/>
<id>snapshots</id>
<name>libs-snapshots</name>
<url>http://artifactory.jd.com/libs-snapshots</url>
</repository>
</repositories>