第三章 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构建阶段时,目标目录会被清除
posted @ 2021-08-12 18:00  年少纵马且长歌  阅读(111)  评论(0编辑  收藏  举报