Maven學習總結(六):pom.xml檔案的說明
什麼是POM?
POM是專案物件模型(Project Object Model)的簡稱,它是Maven專案中的檔案,使用XML表示,名稱叫做pom.xml。作用類似ant的build.xml檔案,功能更強大。該檔案用於管理:原始碼、配置檔案、開發者的資訊和角色、問題追蹤系統、組織資訊、專案授權、專案的url、專案的依賴關係等等。事實上,在Maven世界中,project可以什麼都沒有,甚至沒有程式碼,但是必須包含pom.xml檔案。
1 maven的協作相關屬性
一個最簡單的pom.xml的定義必須包含modelVersion、groupId、artifactId和version這四個元素,當然這其中的元素也是可以從它的父專案中繼承的。在Maven中,使用groupId、artifactId和version組成groupdId:artifactId:version的形式來唯一確定一個專案:
<?xml version="1.0" encoding="UTF-8"?>
<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> <!-- 含義:組織標識,定義了專案屬於哪個組,風向標,座標,或者說若把本專案打包 用途:此名稱則是本地倉庫中的路徑,列如:otowa.user.dao,在M2_REPO目錄下,將是: otowa/user/dao目錄 命名規範:專案名稱,模組,子模組 --> <groupId>otowa.user.dao</groupId> <!-- 含義:專案名稱也可以說你所模組名稱,定義當面Maven專案在組中唯一的ID 用途:例如:user-dao,在M2_REPO目錄下,將是:otowa/user/dao/user-dao目錄 命名規範:唯一就好 --> <artifactId>user-dao</artifactId> <!-- 含義:專案當前的版本號 用途:例如:0.0.1-SNAPSHOT,在M2_REPO目錄下,將是:otowa/user/dao/user-dao/0.0.1-SNAPSHOT目錄 --> <version>0.0.1-SNAPSHOT</version> <!-- 打包的格式,可以為:pom , jar , maven-plugin , ejb , war , ear , rar , par --> <packaging>war</packaging> <!-- 元素聲明瞭一個對使用者更為友好的專案名稱 --> <name>maven</name> </project>
2、JavaProject的pom.xml檔案說明
通過Maven構建的JavaProject,在專案的根目錄下都會存在一個pom.xml檔案,這個檔案是Maven的核心。
1、pom意思就是project object model。
2、pom.xml包含了專案構建的資訊,包括專案的資訊、專案的依賴等。
3、pom.xml檔案是可以繼承的,大型專案中,子模組的pom.xml一般都會繼承於父模組的pom.xml
pom.xml檔案的內容如下:
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 5 <groupId>com.mycompany.app</groupId> 6 <artifactId>myapp</artifactId> 7 <version>1.0-SNAPSHOT</version> 8 <packaging>jar</packaging> 9 10 <name>myapp</name> 11 <url>http://maven.apache.org</url> 12 13 <properties> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 </properties> 16 17 <dependencies> 18 <dependency> 19 <groupId>junit</groupId> 20 <artifactId>junit</artifactId> 21 <version>3.8.1</version> 22 <scope>test</scope> 23 </dependency> 24 </dependencies> 25 </project>
pom.xml檔案的節點元素說明:
<project> pom檔案的頂級節點
<modelVersion> object model版本,對Maven2和Maven3來說,只能是4.0.0
<groupId> 專案建立組織的識別符號,一般是域名的倒寫
<artifactId> 定義了專案在所屬組織的識別符號下的唯一標識,一個組織下可以有多個專案
<version> 當前專案的版本,SNAPSHOT,表示是快照版本,在開發中
<packaging> 打包的方式,有jar、war、ear等
<name> 專案的名稱
<url> 專案的地址
<properties> 屬性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dependencies> 構建專案依賴的jar
其中由groupId、artifactId和version唯一的確定了一個專案座標