POM示例
下面的POM示例,是可能用於構建和測試一個項目的腳本。一個POM是一個XML文檔,看起來類似於如下的示例:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
此POM腳本允許編譯、測試以及生成基本的文檔。你可能會問單憑這區區15行代碼是如何做到的,實際上這是一個十分好且基本的問題。答案在於Maven對於其Super POM(譯者註:意即所有POM腳本的父腳本)的隱匿調用。
規則
Maven的POM文檔帶有全部的Maven所鼓勵的默認規則,這類似於Java語言的java.lang.Object對象。
在Java里,所有對象都是java.lang.Object的子對象,同樣的,在Maven中,所有POM也都是一個Super POM的子腳本。這個Super POM乍一看可能讓你覺得恐怖,要記住的最關鍵一點是,Super POM包含了重要信息,因此你不必在創建一個POM的時候重複這些信息。
包含元素
一個POM包含了關於你的項目的所有重要信息。之前提供的POM示例,非常簡單,但仍然顯示出了一個POM所包含的一些關鍵元素。
project:這是所有pom檔案中的最頂級元素,一級根元素。
modelVersion:此必需的元素說明了本POM所使用的模型版本。模型本身的版本很少改變,雖然如此,但它仍然是必不可少的,以當Maven引入了新的特性或者其他模型變更的時候,確保穩定性。
groupId:本元素表示創建本項目的組織的唯一標識。groupId是一個項目的核心關鍵標識之一,它基於組織的完整屬性域名。
artifactId:表示本項目的主要項目的唯一基本名。一個典型的由Maven生成的項目名稱將會是如下的格式:<artifactId>-<version>.<extension>;,其他部分諸如源包也使用artifactId作為它們名稱的一部分。
packaging:表示本項目所使用的包類型(JAR,WAR,EAR等)。這不僅僅意味著將使用JAR,、WAR、EAR打包,也表明在作為構建流程一部分的,一個特定的生命周期。此生命周期是一個主題處理,會在本章的稍後提到。只要記住此選定的項目包扮演的是定製構建生命周期的角色。本元素的默認值是jar,因此在大多數情況下,你不需要去特別指定。
version:表示項目的版本,Maven對於你的版本管理大有幫助,你會經常看到一個版本的SNAPSHOT(快照),指示項目在開發中的不同狀態。
name:項目的顯示名稱,常用於Maven生成的文檔當中,並在構建過程中,為你的項目或其他的項目作為一種依賴使用。
url:項目的網站網址。
description:項目的介紹。