1.pom簡(jiǎn)介
pom指的是project object model,又叫項(xiàng)目對(duì)象模型。Maven的pom文件是一個(gè)XML文件,用于描述項(xiàng)目的各種屬性、依賴(lài)和構(gòu)建信息,包括項(xiàng)目的名稱(chēng)、版本、許可證、作者、描述、依賴(lài)關(guān)系、構(gòu)建過(guò)程、插件等??偟膩?lái)說(shuō),POM文件是Maven工程的基本工作單元,它包含了項(xiàng)目的所有必要信息,使得Maven能夠自動(dòng)化地構(gòu)建和管理項(xiàng)目。
2.常用的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">
<!-- 模型版本號(hào) -->
<modelVersion>4.0.0</modelVersion>
<!-- 父項(xiàng)目坐標(biāo)屬性 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.1</version>
<relativePath>/home/mymodule</relativePath>
</parent>
<!-- 當(dāng)前項(xiàng)目基本屬性 -->
<groupId>com.njh</groupId>
<artifactId>Njh-Cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Njh-Cloud</name>
<description>Njh-Cloud</description>
<packaging>pom</packaging>
<!-- 當(dāng)前項(xiàng)目下的子模塊配置 -->
<modules>
<module>njh-gateway</module>
</modules>
<!-- 項(xiàng)目常量屬性設(shè)置 -->
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 項(xiàng)目依賴(lài)管理 -->
<dependencyManagement>
<dependencies>
<!-- SpringCloud 微服務(wù) -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringBoot 依賴(lài)配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 項(xiàng)目依賴(lài)定義 -->
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
</dependencies>
<!-- 項(xiàng)目構(gòu)建信息 -->
<build>
<!-- 插件管理 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
<!-- 資源管理 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 關(guān)閉過(guò)濾 -->
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/webapp/</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
<!-- 引入所有 匹配文件進(jìn)行過(guò)濾 -->
<includes>
<include>application*</include>
<include>bootstrap*</include>
<include>logback*</include>
</includes>
<!-- 啟用過(guò)濾 即該資源中的變量將會(huì)被過(guò)濾器中的值替換 -->
<filtering>true</filtering>
</resource>
</resources>
</build>
<!-- 項(xiàng)目環(huán)境信息 -->
<profiles>
<profile>
<!-- 本地開(kāi)發(fā)環(huán)境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<!-- 默認(rèn)激活dev環(huán)境 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 生產(chǎn)環(huán)境 -->
<id>prd</id>
<properties>
<profiles.active>prd</profiles.active>
</properties>
</profile>
</profiles>
<!-- 項(xiàng)目倉(cāng)庫(kù)信息 -->
<repositories>
<repository>
<id>public</id>
<name>nexus</name>
<url>https://mirrors.njh.cloud.com/repository/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<!-- 項(xiàng)目插件倉(cāng)庫(kù)信息 -->
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>nexus</name>
<url>https://mirrors.njh.cloud.com/repository/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
3.父項(xiàng)目坐標(biāo)屬性
在Maven中使用<parent>
標(biāo)簽是為了在多模塊項(xiàng)目中共同管理依賴(lài),可以讓多個(gè)模塊之間共享依賴(lài)關(guān)系,從而避免了重復(fù)的依賴(lài)定義。通過(guò)<parent>
標(biāo)簽中的<groupId>
、<artifactId>
和<version>
元素來(lái)指定父項(xiàng)目的坐標(biāo),子項(xiàng)目就可以通過(guò)該坐標(biāo)找到父項(xiàng)目并自動(dòng)繼承父項(xiàng)目的pom文件中定義的相關(guān)依賴(lài),然后子項(xiàng)目就可以不用重復(fù)去聲明父項(xiàng)目中已存在的依賴(lài),可以直接使用父項(xiàng)目中的依賴(lài)。
<parent>
<!-- 父項(xiàng)目的群組標(biāo)識(shí)符 -->
<groupId>org.springframework.boot</groupId>
<!-- 父項(xiàng)目的項(xiàng)目名標(biāo)識(shí)符 -->
<artifactId>spring-boot-starter-parent</artifactId>
<!-- 父項(xiàng)目的版本號(hào)標(biāo)識(shí)符 -->
<version>3.2.1</version>
<!-- 用于指示Maven在查找父級(jí)POM文件時(shí)應(yīng)該搜索的相對(duì)路徑 -->
<relativePath>/home/mymodule</relativePath>
</parent>
4. 當(dāng)前項(xiàng)目基本屬性
用于設(shè)置當(dāng)前項(xiàng)目的一些基本信息,通過(guò)<groupId>
、<artifactId>
和<version>
元素來(lái)指定當(dāng)前項(xiàng)目的坐標(biāo);<name>
用來(lái)設(shè)置項(xiàng)目名稱(chēng);<description>
用來(lái)設(shè)置項(xiàng)目的描述信息;<url>
用來(lái)設(shè)置項(xiàng)目的主也url地址;<packaging>
用來(lái)設(shè)置項(xiàng)目的構(gòu)建類(lèi)型,如:jar、war、pom等。
<groupId>com.njh</groupId>
<artifactId>Njh-Cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Njh-Cloud</name>
<description>Njh-Cloud</description>
<url>https://gitee.com/Njh-Cloud</url>
<packaging>pom</packaging>
5.當(dāng)前項(xiàng)目下的子模塊配置
在Maven中,<modules>
標(biāo)簽用于定義項(xiàng)目的模塊。一個(gè)Maven項(xiàng)目可以包含多個(gè)模塊,每個(gè)模塊可以被視為一個(gè)獨(dú)立的子項(xiàng)目。通過(guò)使用<modules>
標(biāo)簽,可以將一個(gè)大項(xiàng)目拆分成多個(gè)小模塊,每個(gè)模塊都有自己的構(gòu)建過(guò)程和依賴(lài)關(guān)系,從而提高項(xiàng)目的可維護(hù)性和可重用性。
<modules>
<module>njh-gateway</module>
</modules>
6.項(xiàng)目常量屬性設(shè)置
在Maven中,<properties>
標(biāo)簽中用于定義項(xiàng)目的常量屬性,這些常量屬性可以在整個(gè)項(xiàng)目中被共享和重用,從而簡(jiǎn)化了項(xiàng)目的配置和管理。每個(gè)屬性都包含一個(gè)id和一個(gè)值,在使用時(shí)通過(guò)${id}
就能獲取到設(shè)置的屬性值。
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 使用上面的屬性 -->
<version>${java.version}</version>
7.項(xiàng)目依賴(lài)管理
在Maven中,<dependencyManagement>
標(biāo)簽用于管理項(xiàng)目中的依賴(lài)關(guān)系,確保所有子模塊共享相同的依賴(lài)版本。通過(guò)在<dependencyManagement>
標(biāo)簽中添加需要共用的依賴(lài),在該項(xiàng)目下的所有子模塊會(huì)自動(dòng)引入相同的依賴(lài),可以避免在每個(gè)子模塊中重復(fù)定義相同的依賴(lài),提高了項(xiàng)目構(gòu)建的效率和一致性。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<version>version</version>
</dependency>
</dependencies>
</dependencyManagement>
8.項(xiàng)目依賴(lài)定義
在Maven中,<dependencies>
標(biāo)簽用于定義項(xiàng)目的依賴(lài)關(guān)系,可以將項(xiàng)目所需的依賴(lài)庫(kù)添加到項(xiàng)目中,并確保這些依賴(lài)被正確地管理和使用。每個(gè)依賴(lài)都是使用<dependency>
標(biāo)簽定義的,<dependency>
標(biāo)簽中常用的屬性有:
-
<groupId>
:依賴(lài)庫(kù)的唯一標(biāo)識(shí)符,通常是組織或項(xiàng)目的唯一標(biāo)識(shí)符。 -
<artifactId>
:依賴(lài)庫(kù)的唯一標(biāo)識(shí)符,通常是項(xiàng)目或庫(kù)的唯一標(biāo)識(shí)符。 -
<version>
:依賴(lài)庫(kù)的版本號(hào)。 -
<scope>
:依賴(lài)項(xiàng)的作用范圍 ,包括compile、provided、runtime、test、system、optional。 -
<optional>
:標(biāo)注依賴(lài)是否傳遞。默認(rèn)值為 false,表示可以將該依賴(lài)向下傳遞給其他依賴(lài)了該項(xiàng)目的項(xiàng)目。設(shè)置成true,則不會(huì)向下傳遞。 -
<exclusions>
:排除項(xiàng)目中引入的依賴(lài)中所包含的某些間接依賴(lài)。
<dependencies>
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<version>version</version>
<scope>compile</scope>
<optional>true</optional>
<exclusions>
<exclusion>
<groupId>groupid</groupId>
<artifactId>artifactid</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
scope 依賴(lài)項(xiàng)常用的適用范圍如下:
- compile:缺省值,表示所有階段(編譯、測(cè)試、運(yùn)行)可用,該依賴(lài)包需要全程存在會(huì)隨著項(xiàng)目一起發(fā)布。
- provided:表示只在提供依賴(lài)的環(huán)境中是可用的,也就是在編譯、測(cè)試時(shí)需要,運(yùn)行時(shí)不需要,該依賴(lài)不會(huì)被打包到項(xiàng)目中;
- runtime:表示只在運(yùn)行時(shí)可用,該依賴(lài)會(huì)打包到項(xiàng)目中;
- test:表示只在測(cè)試期間是可用的,該依賴(lài)不會(huì)被打包到項(xiàng)目中;
- system:表示只能在系統(tǒng)類(lèi)路徑中找到,不會(huì)在Repository中查找它;
9.項(xiàng)目構(gòu)建信息
在Maven中,<build>
標(biāo)簽用于配置項(xiàng)目的構(gòu)建過(guò)程。它包含了一系列的子標(biāo)簽,用于定義項(xiàng)目的構(gòu)建策略和任務(wù)。常用的字標(biāo)簽有:
-
<plugins>
:用于定義Maven插件的列表。Maven插件可以用來(lái)執(zhí)行各種任務(wù),例如編譯代碼、運(yùn)行測(cè)試、打包和發(fā)布項(xiàng)目等。 -
<pluginManagement>
:用于定義項(xiàng)目的構(gòu)建插件的列表,以及這些插件的配置。 -
<resources>
:用于定義資源的配置,例如在構(gòu)建過(guò)程中要處理的屬性文件或資源文件。 -
<testResources>
:類(lèi)似于<resources>
,但是用于配置測(cè)試資源,例如在測(cè)試過(guò)程中要處理的屬性文件或資源文件。 -
<sourceDirectory>
:用于指定項(xiàng)目的源代碼目錄。 -
<outputDirectory>
:用于指定項(xiàng)目的輸出目錄,例如生成的JAR文件或WAR文件。 -
<filters>
:用于定義項(xiàng)目的過(guò)濾器,例如在構(gòu)建過(guò)程中要應(yīng)用的屬性文件過(guò)濾器。 -
<finalName>
:用于指定項(xiàng)目的最終名稱(chēng),例如生成的JAR文件的名稱(chēng)。
<build>
<plugins></plugins>
<resources></resources>
<testResources></testResources>
<sourceDirectory></sourceDirectory>
<outputDirectory></outputDirectory>
<filters></filters>
<finalName></finalName>
<pluginManagement></pluginManagement>
</build>
10.項(xiàng)目環(huán)境信息
在Maven中,<profiles>
標(biāo)簽用于定義項(xiàng)目的構(gòu)建環(huán)境的配置,它允許你為不同的構(gòu)建環(huán)境或目標(biāo)提供不同的配置。通過(guò)不同的<profile>
標(biāo)簽來(lái)定義不同的環(huán)境配置,在<profile>
標(biāo)簽里面包含以下部分:
-
<id>
:配置文件的唯一標(biāo)識(shí)符。 -
<activation>
:用于激活配置文件的邏輯。例如,使用<activeByDefault>
屬性來(lái)指定默認(rèn)激活的配置文件。 -
<properties>
: 用于存儲(chǔ)配置文件中使用的屬性。 -
<build>
: 用于定義配置文件中的構(gòu)建任務(wù)和插件。
<profiles>
<profile>
<!-- 本地開(kāi)發(fā)環(huán)境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<!-- 默認(rèn)激活dev環(huán)境 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 生產(chǎn)環(huán)境 -->
<id>prd</id>
<properties>
<profiles.active>prd</profiles.active>
</properties>
</profile>
</profiles>
11.項(xiàng)目倉(cāng)庫(kù)信息
在Maven中,<repositories>
標(biāo)簽用于配置項(xiàng)目所需的依賴(lài)庫(kù)的位置,使得項(xiàng)目能夠方便地獲取和管理依賴(lài)。通過(guò)配置不同的倉(cāng)庫(kù),可以輕松地在不同的環(huán)境中使用不同的依賴(lài)庫(kù),從而增加了項(xiàng)目的靈活性和可移植性。其中<repository>
標(biāo)簽包含以下部分:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-803131.html
-
<id>
:倉(cāng)庫(kù)的唯一標(biāo)識(shí)符。 -
<url>
:倉(cāng)庫(kù)的URL地址。 -
<releases>
:用于配置倉(cāng)庫(kù)中發(fā)布的版本。如果<releases>
標(biāo)簽被包含,那么Maven會(huì)在這個(gè)倉(cāng)庫(kù)中搜索并下載項(xiàng)目所需的依賴(lài)庫(kù)。 -
<snapshots>
:用于配置倉(cāng)庫(kù)中快照版本的位置。如果<snapshots>
標(biāo)簽被包含,那么Maven會(huì)在這個(gè)倉(cāng)庫(kù)中搜索并下載項(xiàng)目所需的快照版本。
<repositories>
<repository>
<id>snapshots</id>
<url>http://repo.maven.apache.org/maven-snapshots/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>releases</id>
<url>http://repo.maven.apache.org/maven-releases/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
12.項(xiàng)目插件倉(cāng)庫(kù)信息
在Maven中,<pluginRepositories>
標(biāo)簽用于配置項(xiàng)目所需的插件庫(kù)的位置,與<repositories>
標(biāo)簽功能基本相同,主要的區(qū)別是為了獲取和管理Maven插件和插件依賴(lài)的。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-803131.html
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://repo.maven.apache.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
到了這里,關(guān)于Maven--pom.xml文件詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!