1. 程式人生 > 其它 >第三章 Maven-pom.xml檔案

第三章 Maven-pom.xml檔案

一、POM概述

POM是Project Object Model/專案物件模型的縮寫。pom.xml檔案中包含了依賴關係、構建目錄、源目錄、測試源目錄、外掛、目標等專案資訊和配置資訊。Maven讀取pom.xml檔案,然後執行構建目標。

二、pom.xml檔案的基本元素

一個pom.xml檔案至少需要包含以下元素:
元素 描述
project pom檔案根元素,表示一個專案
modelVersion project元素的子元素,指定modelVersion版本號,應該設定4.0.0
groupId project元素的子元素,指定專案所屬的group
artifactId
project元素的子元素,專案交付件ID,專案交付件是指專案的最終交付檔案,如jar、zip、war�?/span>
version project元素的子元素,專案(交付件)的版本號
# 示例:
<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>
    <groupId>com.test.demo</groupId>
    <artifactId>mytest-demo</artifactId>
    <version>0.0.1</version> 

</project>  

三、pom.xml檔案的常用元素

除了基本元素,下面是pom檔案的一些常用元素:
元素 描述
packaging 定義打包型別,如jar, war
name 指定專案名稱
url 指定專案url
dependencies 表示專案依賴項列表
dependency 表示單個依賴項,這個元素是依賴項列表元素的子元素
scope 單個依賴項的作用域,作用域可以是compile、test、runtime、provided、system之一,作用域的意圖是限定該依賴項作用範圍,如test,則表明依賴項只在test時起作用
# 示例:

<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>
    <groupId>com.test.demo</groupId>
    <artifactId>test-demo</artifactId>
    <version>0.0.1</version>  
    <packaging>jar</packaging>  

    <name>mytest demo </name>  
    <url>http://192.168.1.18:524</url>  

    <dependencies>  
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13-beta-2</version>
            <scope>test</scope>
        </dependency>

    </dependencies>  

</project>  

四、pom 繼承

所有Maven POM檔案都繼承自一個父POM。如果沒有指定,則POM檔案預設繼承自基本POM (base POM)。如下圖所示:
# 可以使POM檔案顯式地繼承另一個POM檔案,示例:

<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>

    <parent>
        <groupId>com.test.demo</groupId>
        <artifactId>my-parent</artifactId>
        <version>2.0</version>
        <relativePath>../my-parent</relativePath>
    </parent>


    <artifactId>my-project</artifactId>
    ...
</project>

ps:子POM檔案可以覆蓋父POM檔案的設定

五、生效 pom

使用pom繼承時,很難清楚知道最終的生效pom是怎麼樣的,可以通過以下命令展示最終生效的pom內容:

mvn help:effective-pom

六、Maven專案的目錄結構

Maven專案有標準的目錄結構。如果遵循該目錄結構,就不需要在POM檔案中指定原始碼、測試程式碼等目錄。

#1.下面介紹幾個最重要的目錄:
- src
  - main
    - java
    - resources
  - test
    - java
    - resources

- target

#2.重要目錄含義:
- src目錄是原始碼和測試程式碼的根目錄,main目錄是專案原始碼(不含測試目錄)的根目錄,test目錄包含測試原始碼

- resources目錄是資源目錄

- 如果專案是web應用程式,則webapp目錄包含Java web應用程式。webapp目錄將成為web應用程式的根目錄,包含WEB-INF目錄等

- 目標目錄由Maven建立,包含Maven生成的所有已編譯類、JAR檔案等。在執行clean構建階段時,目標目錄會被清除