最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Maven的配置文件pom.xml詳解(含常用plugin)

 更新時(shí)間:2024年08月07日 16:00:44   作者:戰(zhàn)斧  
pom.xml是Maven項(xiàng)目的核心配置文件,它是 項(xiàng)目對(duì)象模型 - Project Object Model(POM)的縮寫(xiě),本文我們將全面解析pom.xml,了解其結(jié)構(gòu)和屬性,以及如何使用它來(lái)管理項(xiàng)目,感興趣的朋友跟隨小編一起看看吧

上一次,我們講解了Maven的安裝與配置,那么這次我們就講講pom.xml,在Maven中,pom.xml是必不可少的配置文件,它定義了項(xiàng)目的各種屬性和依賴(lài)關(guān)系。接下來(lái),我們將全面解析pom.xml,了解其結(jié)構(gòu)和屬性,以及如何使用它來(lái)管理項(xiàng)目

一、什么是pom.xml

pom.xml是Maven項(xiàng)目的核心配置文件,它是 項(xiàng)目對(duì)象模型 - Project Object Model(POM)的縮寫(xiě)。POM定義了項(xiàng)目的所有屬性,包括項(xiàng)目的名稱(chēng)、版本、依賴(lài)關(guān)系、構(gòu)建配置等。使用pom.xml,我們可以輕松地管理項(xiàng)目的構(gòu)建和依賴(lài)關(guān)系,讓我們能夠更專(zhuān)注于業(yè)務(wù)邏輯的開(kāi)發(fā)。

二、pom.xml的結(jié)構(gòu)

我們先看一個(gè)簡(jiǎn)單pom.xml的結(jié)構(gòu),首先<project><modelVersion>標(biāo)簽主要針對(duì)的是本pom.xml文件的格式,如下:

<?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>
  <groupId>com.example</groupId>
  <artifactId>example-proj</artifactId>
  <version>1.0.0</version>
  <name>Example Project</name>
  <description>This is an example Maven project.</description>
  <url>http://www.example.com/</url>
  <licenses>   <!-- 許可證 -->
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <developers>     <!-- 開(kāi)發(fā)者信息 -->
    <developer>
      <id>developer1</id>
      <name>Developer One</name>
      <email>developer1@example.com</email>
      <organization>Example Organizations Inc.</organization>
      <organizationUrl>http://www.example-organizations.com/</organizationUrl>
      <roles>
        <role>developer</role>
      </roles>
      <timezone>-5</timezone>
    </developer>
  </developers>
  <dependencies>  <!-- 依賴(lài)項(xiàng) -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.2.1.RELEASE</version>
    </dependency>
  </dependencies>
  <build>   <!-- 項(xiàng)目構(gòu)建 -->
    <plugins>   <!-- 插件配置 -->
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>com.example.App</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

其中<modelVersion>指定了pom.xml文件使用的XML schema版本,目前,其最新的版本是4.0.0。其他部分我們會(huì)在下面進(jìn)行詳解

三、項(xiàng)目的基本信息

與項(xiàng)目的基本信息相關(guān)的標(biāo)簽有很多,以下算必填項(xiàng)

  • groupId:項(xiàng)目的組名,通常是反轉(zhuǎn)的域名,比如com.example。
  • artifactId:項(xiàng)目的唯一標(biāo)識(shí)符,通常是項(xiàng)目的名稱(chēng)。
  • version:項(xiàng)目的版本號(hào)。
  • packaging:項(xiàng)目的打包方式,通常是jar、warpom,如果沒(méi)有指定packaging,默認(rèn)值是jar。

除了上面的幾個(gè)標(biāo)簽,還有一些項(xiàng)目相關(guān),但非必填的內(nèi)容:

  • name:項(xiàng)目名,可選項(xiàng),提供項(xiàng)目的簡(jiǎn)短名稱(chēng)
  • description:項(xiàng)目描述,可選項(xiàng),提供項(xiàng)目的詳細(xì)描述。
  • version:項(xiàng)目主頁(yè),可選項(xiàng),提供項(xiàng)目的網(wǎng)址。
  • licenses: 許可證聲明,可選項(xiàng),聲明項(xiàng)目所使用的一種或多種許可證
  • developers:開(kāi)發(fā)者信息,可選項(xiàng),列出項(xiàng)目的開(kāi)發(fā)人員。
  • url:項(xiàng)目主頁(yè),可選項(xiàng),提供項(xiàng)目的網(wǎng)址

當(dāng)然,還有一些在我們示例中沒(méi)有出現(xiàn)的標(biāo)簽,比如說(shuō) modulesparent

1.modules

modules 標(biāo)簽用于聲明當(dāng)前 Maven 項(xiàng)目包含的模塊子項(xiàng)目,每個(gè)子項(xiàng)目都是一個(gè)獨(dú)立的 Maven 項(xiàng)目,具有自己的 pom.xml 文件,可以進(jìn)行獨(dú)立構(gòu)建和測(cè)試。在父項(xiàng)目的 pom.xml 文件中,使用 標(biāo)簽來(lái)列出所有子項(xiàng)目的名稱(chēng),如下所示:

<project>
  <groupId>com.example.parent</groupId>
  <artifactId>parent-project</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  <modules>
    <module>child1</module>
    <module>child2</module>
    <module>child3</module>
  </modules>
</project>

上述代碼表示當(dāng)前項(xiàng)目是一個(gè) Maven 的多模塊項(xiàng)目:它包含了三個(gè)子項(xiàng)目 child1、child2 和 child3,這三個(gè)子項(xiàng)目與 parent-project 有相同的 groupId 和 version,但是 artifactId 不同,它們的 pom.xml 都位于 parent-project 的根目錄下。當(dāng)使用 Maven 命令在 parent-project 下執(zhí)行構(gòu)建時(shí),Maven 會(huì)對(duì)每個(gè)子模塊執(zhí)行構(gòu)建,最終生成子項(xiàng)目的構(gòu)件并復(fù)制到 parent-project 的 target 目錄下

2.parent

parent 標(biāo)簽用于聲明當(dāng)前 Maven 項(xiàng)目的父項(xiàng)目,它可以將若干個(gè) Maven 項(xiàng)目組織成一個(gè)整體,指定版本號(hào),插件版本號(hào)等,便于管理和維護(hù),在一個(gè) Maven 項(xiàng)目中,使用標(biāo)簽來(lái)引用父項(xiàng)目,如下所示:

<project>
  <groupId>com.example.child</groupId>
  <artifactId>child-project</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>
  <parent>
    <groupId>com.example.parent</groupId>
    <artifactId>parent-project</artifactId>
    <version>1.0.0</version>
    <relativePath>../parent-project/pom.xml</relativePath>
  </parent>
</project>

上述代碼表示當(dāng)前項(xiàng)目 child-project 是 parent-project 的子項(xiàng)目,它的 groupId 和 version 都繼承自 parent-project。元素是一個(gè)可選項(xiàng),它的值是父項(xiàng)目 pom.xml 文件到子項(xiàng)目 pom.xml 文件的相對(duì)路徑,如果子項(xiàng)目 pom.xml 和父項(xiàng)目 pom.xml 在同一目錄下,則可以省略此元素。

3.scm

scm 又叫 Software Configuration Management,即軟件配置管理, 與我們以前提到過(guò)的版本控制有關(guān),是Maven中用于指定源代碼版本控制信息的標(biāo)簽。它可以幫助Maven獲取源代碼并將構(gòu)建生成的二進(jìn)制文件提交到版本控制系統(tǒng)中。scm標(biāo)簽通常用于指定源代碼管理系統(tǒng)的類(lèi)型、URL、開(kāi)發(fā)者連接等詳細(xì)信息。示例如下:

<scm>
    <connection>scm:git:git://github.com/username/repo.git</connection>  <!-- 指定連接到SCM的URL,可以使用HTTP或者SSH協(xié)議 -->
    <developerConnection>scm:git:ssh://github.com/username/repo.git</developerConnection> <!-- 指定開(kāi)發(fā)者連接到SCM的URL,通常使用SSH協(xié)議 -->
    <url>http://github.com/username/repo/tree/master</url> <!-- 指定SCM的web頁(yè)面URL,方便開(kāi)發(fā)者查看SCM信息 -->
    <tag>1.0.0</tag> <!-- 當(dāng)前Maven構(gòu)件的版本在SCM中對(duì)應(yīng)的標(biāo)記 -->
</scm>

developerConnection 與 connection 有些許不同,connection 可以指向一個(gè)本地文件系統(tǒng)路徑,也可以是一個(gè)遠(yuǎn)程代碼倉(cāng)庫(kù)的URL;developerConnection 則是開(kāi)發(fā)者使用的版本控制系統(tǒng)的連接URL,例如connection指向只讀代碼倉(cāng)庫(kù),而developerConnection則指向可寫(xiě)代碼倉(cāng)庫(kù)。

通過(guò)在POM文件中添加scm標(biāo)簽,Maven可以獲取源代碼并構(gòu)建項(xiàng)目,同時(shí)還可以自動(dòng)將構(gòu)建生成的文件提交到版本控制系統(tǒng)中,方便管理代碼版本和協(xié)同開(kāi)發(fā)

4.properties

properties 嚴(yán)格來(lái)說(shuō),并不一定是項(xiàng)目本身的信息,而是人為設(shè)置的屬性或者說(shuō)宏,這個(gè)標(biāo)簽用來(lái)定義和管理項(xiàng)目中所需要的屬性,其作用有以下幾個(gè):

  • 統(tǒng)一管理項(xiàng)目中的常用屬性,比如版本號(hào)、路徑、插件版本等,方便統(tǒng)一修改和管理。
  • 可以在配置過(guò)程中使用 ${…}占位符引用這些屬性,使得配置更加靈活和便捷。
  • 避免硬編碼,提高代碼的可維護(hù)性和可讀性

比如說(shuō)我們可以這么配

<properties>
    <project.name>demo-project</project.name>
    <project.version>1.0.0</project.version>
    <jdk.version>1.8</jdk.version>
</properties>
....省略其余部分
<dependency>
    <groupId>com.example.demo</groupId>
    <artifactId>${project.name}-api</artifactId>
    <version>${project.version}</version>
</dependency>

四、項(xiàng)目的依賴(lài)列表

1.dependency

與項(xiàng)目的依賴(lài)列表相關(guān)的標(biāo)簽最外層由 <dependencies>來(lái)囊括,內(nèi)部包含了各種具體的依賴(lài)<dependency>,該標(biāo)簽用于指定一個(gè)依賴(lài)項(xiàng),它包含以下幾個(gè)子標(biāo)簽

  • <groupId>:指定依賴(lài)項(xiàng)的groupId,項(xiàng)目的組名
  • <artifactId>:指定依賴(lài)項(xiàng)的artifactId,項(xiàng)目的唯一標(biāo)識(shí)符
  • <version>:指定依賴(lài)項(xiàng)的版本號(hào)。
  • <scope>:指定依賴(lài)項(xiàng)在項(xiàng)目中的使用范圍。

其中的 <scope>一般包含以下幾種范圍:常用的有compile、test、providedruntime

  • compile:依賴(lài)庫(kù)默認(rèn)的 scope,表示該依賴(lài)庫(kù)在編譯、測(cè)試、運(yùn)行時(shí)均需要使用。
  • provided:表示該依賴(lài)庫(kù)只在編譯和測(cè)試時(shí)需要使用,而在運(yùn)行時(shí)已經(jīng)被系統(tǒng)或者容器提供,所以不需要打包到最終的應(yīng)用程序中。
  • runtime:表示該依賴(lài)庫(kù)只在運(yùn)行時(shí)需要使用,而在編譯和測(cè)試時(shí)則不需要。
  • test:表示該依賴(lài)庫(kù)只在測(cè)試時(shí)需要使用,而在編譯和運(yùn)行時(shí)則不需要。

比如說(shuō)我們引入了 junit 包,但顯然這個(gè)包我們不需要在打包時(shí)包含,只是用于測(cè)試,那么我們就可以將 junit 的 scope 設(shè)置為 test。

2.repository

當(dāng)然,我們還能在pom文件中支持指定Maven倉(cāng)庫(kù),即使用 <repositories><repository>標(biāo)簽,<repository>用于指定一個(gè)Maven倉(cāng)庫(kù),它包含以下幾個(gè)子標(biāo)簽:

  • <id>:指定Maven倉(cāng)庫(kù)的ID。
  • <name>:指定Maven倉(cāng)庫(kù)的名稱(chēng)。
  • <url>:指定Maven倉(cāng)庫(kù)的URL

五、 項(xiàng)目的構(gòu)建配置

項(xiàng)目的構(gòu)建配置信息,包括編譯器版本、插件列表、源代碼目錄等,接下來(lái)我們慢慢來(lái)講

1.build

build用于定義項(xiàng)目的構(gòu)建配置,包括源代碼目錄、資源目錄、插件等,其中代碼部分的設(shè)置如下

<project>
  .... 省略其他部分
  <build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

需要注意的是,像資源目錄這種路徑是沒(méi)有默認(rèn)值的,但根據(jù)Maven的約定優(yōu)于配置原則(Convention over Configuration),Maven會(huì)使用默認(rèn)的目錄結(jié)構(gòu)去查找源代碼和測(cè)試代碼。默認(rèn)的目錄結(jié)構(gòu)如下

project
|--src
   |--main
      |--java  // Java主源代碼目錄
      |--resources // 資源文件目錄
   |--test
      |--java // 測(cè)試主代碼目錄
      |--resources // 測(cè)試資源文件目錄

因此,在一個(gè)標(biāo)準(zhǔn)的Maven項(xiàng)目中,sourceDirectory默認(rèn)值應(yīng)該是src/main/java。如果有自定義的代碼目錄結(jié)構(gòu),需要顯式地設(shè)置sourceDirectory元素的值。例如,如果有一個(gè)名為“core”的子目錄作為項(xiàng)目的主源代碼目錄,可以按以下方式進(jìn)行配置:

<build>
  <sourceDirectory>core</sourceDirectory>
  ...
</build>

2.plugins

plugins的作用是定義 Maven 插件, plugins 主要用于擴(kuò)展 Maven 的功能,幫助開(kāi)發(fā)人員更方便地構(gòu)建、打包、發(fā)布項(xiàng)目。插件可以通過(guò) Maven 的插件中心或者自己構(gòu)建的私有倉(cāng)庫(kù)來(lái)使用,能在構(gòu)建過(guò)程中執(zhí)行特定的任務(wù),比如編譯、打包、測(cè)試等。

  • 插件的配置可以分為兩種方式:全局配置項(xiàng)目配置。
  • 全局配置是在 Maven 安裝目錄下的 conf/settings.xml 文件中進(jìn)行配置,可以被所有的項(xiàng)目使用。
  • 項(xiàng)目配置則是在項(xiàng)目的 pom.xml 文件中進(jìn)行配置,只對(duì)當(dāng)前項(xiàng)目生效。

插件的使用主要分為以下幾個(gè)步驟:

在 pom.xml 中聲明插件依賴(lài)配置插件的參數(shù)運(yùn)行插件命令

而常用的Maven Plugin有不少,我們一一來(lái)說(shuō)一下:

maven-compiler-plugin

比方說(shuō),最常用的編譯功能,我們可以在pom里面這么寫(xiě)

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
        <showWarnings>true</showWarnings>
        <compilerArgs>
          <arg>-Xlint:unchecked</arg>
          <arg>-Xlint:deprecation</arg>
        </compilerArgs>
      </configuration>
    </plugin>
  </plugins>
</build>

各子標(biāo)簽的作用如下:

  • <source>:指定Java源代碼的版本,例如1.8表示Java 8。
  • <target>:指定編譯后的字節(jié)碼版本,例如1.8表示Java 8。
  • <encoding>:指定源代碼的編碼格式。
  • <showWarnings>:是否顯示編譯警告信息,true表示顯示,false表示不顯示。
  • <compilerArgs>:可選參數(shù),可以添加多個(gè)編譯器參數(shù),例如-Xlint選項(xiàng)用來(lái)啟用編譯器警告檢查。

如果我們按示例中配置,我們就指定了編譯器的源和目標(biāo)版本為1.8,當(dāng)我們使用 mvn compile 命令的時(shí)候,這個(gè)插件將會(huì)編譯我們的 Java 代碼,并將編譯后的 class 文件放置在 target 目錄下

maven-surefire-plugin

maven-surefire-plugin插件是Maven中的一個(gè)測(cè)試框架,用于執(zhí)行Java單元測(cè)試和集成測(cè)試。它的主要作用是在構(gòu)建過(guò)程中運(yùn)行測(cè)試,并生成測(cè)試報(bào)告,在pom.xml中的配置如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M4</version>
            <configuration>
                <skipTests>true</skipTests>
                <forkCount>2</forkCount>
                <useSystemClassLoader>false</useSystemClassLoader>
                <reuseForks>true</reuseForks>
                <includes>
                    <include>**/*Test.java</include>
                    <include>**/*Tests.java</include>
                </includes>
                <systemProperties>
                    <property>
                        <name>testProp1</name>
                        <value>value1</value>
                    </property>
                    <property>
                        <name>testProp2</name>
                        <value>value2</value>
                    </property>
                </systemProperties>
            </configuration>
        </plugin>
    </plugins>
</build>

其中幾個(gè)子標(biāo)簽的作用分別如下

  • <skipTests>:設(shè)置是否跳過(guò)測(cè)試,默認(rèn)值為false。
  • <forkCount>:設(shè)置并行運(yùn)行測(cè)試的JVM進(jìn)程數(shù)。
  • <useSystemClassLoader>:設(shè)置是否使用系統(tǒng)類(lèi)加載器加載測(cè)試類(lèi)。
  • <reuseForks>:設(shè)置是否重用已經(jīng)啟動(dòng)的JVM進(jìn)程。
  • <includes>:設(shè)置測(cè)試文件的過(guò)濾規(guī)則,支持通配符。
  • <systemProperties>:設(shè)置傳遞給測(cè)試環(huán)境的系統(tǒng)屬性,可以在測(cè)試代碼中通過(guò)System.getProperty()方法獲取 maven-jar-plugin

maven-jar-plugin 用于將項(xiàng)目打包為JAR文件,在這個(gè)例子中,我們告訴Maven將com.example.MyApp作為JAR文件的主類(lèi),那么在pom.xml中的配置如下:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.1.0</version>
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>com.example.MyApp</mainClass>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>
  • <archive>:JAR文件的歸檔配置信息
  • <manifest>:MANIFEST.MF文件的配置信息
  • <addClasspath>:是否將依賴(lài)項(xiàng)添加到Class-Path條目中
  • <mainClass>:定義可執(zhí)行JAR文件的入口類(lèi)

maven-install-plugin

當(dāng)執(zhí)行mvn instal命令時(shí),maven-install-plugin 用于將一個(gè)特定的文件安裝到本地Maven倉(cāng)庫(kù)中,以便其他項(xiàng)目可以使用它,例如在pom.xml中的配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>3.0.0-M1</version>
    <configuration>
        <file>${project.build.directory}/example.jar</file>
        <groupId>com.example</groupId>
        <artifactId>example</artifactId>
        <version>1.0.0</version>
        <packaging>jar</packaging>
    </configuration>
</plugin>
  • <file>:用來(lái)指定要安裝到本地Maven倉(cāng)庫(kù)中的文件的路徑。該標(biāo)簽的值應(yīng)該是一個(gè)文件的絕對(duì)或相對(duì)路徑。
  • <groupId>:通過(guò)該標(biāo)簽設(shè)置所安裝文件的groupId,通常表示項(xiàng)目的組織或組織部門(mén)的標(biāo)識(shí)符。
  • <artifactId>:同樣是通過(guò)該標(biāo)簽設(shè)置所安裝文件的artifactId,通常是指該文件的名稱(chēng)。
  • <version>:通過(guò)該標(biāo)簽設(shè)置所安裝文件的版本號(hào),通常采用三級(jí)版本號(hào)的格式,例如"1.0.0"。
  • <packaging>:通過(guò)該標(biāo)簽來(lái)指定所安裝文件的打包類(lèi)型,通常是jar或war。

需要注意的是,<file>標(biāo)簽必須與<groupId><artifactId><version>標(biāo)簽一起使用,才能正確將該文件安裝到本地Maven倉(cāng)庫(kù)中,并在其他項(xiàng)目中使用,除了以上的配置,還有一些可選的配置項(xiàng):

<classifier>:通過(guò)該標(biāo)簽指定所安裝文件的分類(lèi)器,例如"sources"或"javadoc"等,默認(rèn)為null。
<localRepositoryPath>:通過(guò)該標(biāo)簽指定本地倉(cāng)庫(kù)的路徑,默認(rèn)為Maven默認(rèn)的本地倉(cāng)庫(kù)路徑。
<createChecksum>:是否在安裝文件時(shí)創(chuàng)建SHA-1校驗(yàn)和,默認(rèn)為true。
<skip>:是否跳過(guò)該插件的運(yùn)行,默認(rèn)為false,即不跳過(guò)。

maven-clean-plugin

maven-clean-plugin 用于清理Maven項(xiàng)目中的目標(biāo)文件和構(gòu)建臨時(shí)文件,以便重新構(gòu)建項(xiàng)目。它通常被用于在構(gòu)建之前清理項(xiàng)目,以確保在構(gòu)建時(shí)使用最新的代碼和資源ar文件,在pom.xml中的配置如下:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-clean-plugin</artifactId>
      <version>3.1.0</version>
      <executions>
        <execution>
          <id>clean-all</id>
          <phase>clean</phase>
          <goals>
            <goal>clean</goal>
          </goals>
          <configuration>
            <excludeDefaultDirectories>true</excludeDefaultDirectories>
            <filesets>
              <fileset>
                <directory>target</directory>
                <includes>
                  <include>**/*</include>
                </includes>
              </fileset>
            </filesets>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

該配置中,maven-clean-plugin的版本號(hào)是3.1.0,它在clean階段(phase標(biāo)簽指定)執(zhí)行,使用的目標(biāo)是clean。下面是各個(gè)子標(biāo)簽的作用:

  • <excludeDefaultDirectories>:默認(rèn)值為false,如果設(shè)置為true,則禁用清理操作中默認(rèn)清理的目錄(如target、bin等)。
  • <filesets>:文件集合,可以指定多個(gè)文件或文件夾需要被清理。
  • <fileset>:?jiǎn)蝹€(gè)的文件或文件夾。
  • <directory>:需要清理的文件夾路徑。
  • <includes>:需要包含的文件或文件夾,支持通配符。
  • <excludes>:需要排除的文件或文件夾,支持通配符

至于通配符,使用規(guī)則如下:

*  匹配零個(gè)或多個(gè)字符
** 匹配零個(gè)或多個(gè)目錄

需要注意的是,Maven的通配符僅支持*和**,不支持其他通配符,例如?。同時(shí),通配符匹配的范圍是相對(duì)于構(gòu)建目錄的,也就是默認(rèn)情況下是相對(duì)于pom.xml文件的目錄

maven-release-plugin

maven-release-plugin 可以幫助我們?cè)诖a庫(kù)中創(chuàng)建一個(gè)穩(wěn)定的發(fā)布版本,并將其發(fā)布到Maven倉(cāng)庫(kù)中,同時(shí)更新開(kāi)發(fā)版本號(hào),以便于下次開(kāi)發(fā)版本的迭代,它可以做如下配置

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.5.2</version>
      <configuration>
        <tagNameFormat>v@{project.version}</tagNameFormat>
        <tagBase>http://svn.example.com/tags</tagBase>
        <autoVersionSubmodules>true</autoVersionSubmodules>
        <releaseProfiles>release</releaseProfiles>
        <branchBase>http://svn.example.com/branches</branchBase>
      </configuration>
    </plugin>
  </plugins>
</build>
  • <tagNameFormat>: 指定發(fā)布版本的標(biāo)簽格式,@{project.version}會(huì)被替換為項(xiàng)目的版本號(hào)。在上面的配置中,標(biāo)簽格式為v@{project.version}。
  • <tagBase>: 用于指定打標(biāo)簽的位置,默認(rèn)值為 ${project.scm.url},即和項(xiàng)目的 SCM 地址相同。
  • <autoVersionSubmodules>: 是否自動(dòng)更新子模塊的版本號(hào)。如果設(shè)置為true,則子模塊的版本號(hào)會(huì)自動(dòng)更新為父模塊的版本號(hào)。
  • <releaseProfiles>: 指定觸發(fā)發(fā)布的Maven profile。只有在激活該profile后才會(huì)觸發(fā)發(fā)布操作。在上面的配置中,只有當(dāng)profile名稱(chēng)為release時(shí),才會(huì)觸發(fā)發(fā)布操作,關(guān)于profile,我們下面會(huì)講
  • <branchBase>:用于指定創(chuàng)建分支的位置,默認(rèn)值同 tagBase,即和項(xiàng)目的 SCM 地址相同。

3.profiles

profiles用于定義 Maven 運(yùn)行時(shí)的不同配置環(huán)境,比如開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境等,可以在不同的環(huán)境中使用不同的配置,比如我們做了如下配置

<profiles>
  <profile>
    <id>prod</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.1</version>
          <configuration>
            <release>11</release>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>
  • <id> 標(biāo)簽指定profile的唯一標(biāo)識(shí)符。
  • <activation> 標(biāo)簽指定何時(shí)使用該profile。在示例中,activeByDefault設(shè)置為true表示默認(rèn)啟用該profile。
  • <build> 標(biāo)簽包含一組構(gòu)建配置,這些配置將在激活profile時(shí)覆蓋默認(rèn)配置。在示例中,它定義了maven-compiler-plugin插件的版本和為Java 11設(shè)置編譯器版本。

在Maven中,使用以下命令激活特定的profile:

mvn clean install -Pprod

這將激活prod profile,覆蓋默認(rèn)構(gòu)建配置。

六、pom.xml的使用

經(jīng)過(guò)了上面的學(xué)習(xí),不難發(fā)現(xiàn),使用pom.xml可以輕松地管理項(xiàng)目的構(gòu)建和依賴(lài)關(guān)系,其主要用法其實(shí)有三種:

  • 添加依賴(lài):在dependencies標(biāo)簽下添加依賴(lài),包括groupId、artifactId、version、scope等信息。
  • 修改打包方式:在packaging標(biāo)簽下修改項(xiàng)目的打包方式,通常是jar、war或pom。
  • 配置插件:在build標(biāo)簽下配置插件,包括groupId、artifactId、version等信息。插件可以幫助我們處理各種構(gòu)建任務(wù),比如編譯代碼、生成文檔、打包文件等。

到此這篇關(guān)于全面詳解Maven的配置文件pom.xml(含常用plugin)的文章就介紹到這了,更多相關(guān)Maven 配置文件pom.xml內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringKafka消息消費(fèi)之@KafkaListener與消費(fèi)組配置方式

    SpringKafka消息消費(fèi)之@KafkaListener與消費(fèi)組配置方式

    這篇文章主要介紹了SpringKafka消息消費(fèi)之@KafkaListener與消費(fèi)組配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • SpringMVC的組件之HandlerExceptionResolver詳解

    SpringMVC的組件之HandlerExceptionResolver詳解

    這篇文章主要介紹了SpringMVC的組件之HandlerExceptionResolver詳解,不管是在處理請(qǐng)求映射(HandlerMapping),還是在請(qǐng)求被處理(Handler)時(shí)拋出的異常,DispatcherServlet都會(huì)委托給HandlerExceptionResolver進(jìn)行異常處理,該接口只有一個(gè)方法,需要的朋友可以參考下
    2023-10-10
  • 詳解Spring Boot自動(dòng)裝配的方法步驟

    詳解Spring Boot自動(dòng)裝配的方法步驟

    這篇文章主要介紹了詳解Spring Boot自動(dòng)裝配的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 一文掌握J(rèn)ava開(kāi)發(fā)工具M(jìn)aven(簡(jiǎn)單上手)

    一文掌握J(rèn)ava開(kāi)發(fā)工具M(jìn)aven(簡(jiǎn)單上手)

    掌握maven的相關(guān)知識(shí)是Java開(kāi)發(fā)必備的技能,今天通過(guò)本文從入門(mén)安裝開(kāi)始,逐步深入講解maven的相關(guān)知識(shí),包括maven的安裝到簡(jiǎn)單上手maven項(xiàng)目開(kāi)發(fā),感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • Java中Map的用法詳解

    Java中Map的用法詳解

    將鍵映射到值的對(duì)象。一個(gè)映射不能包含重復(fù)的鍵;每個(gè)鍵最多只能映射到一個(gè)值。此接口取代 Dictionary 類(lèi),后者完全是一個(gè)抽象類(lèi),而不是一個(gè)接口
    2016-05-05
  • 深入了解Java語(yǔ)言中的并發(fā)性選項(xiàng)有何不同

    深入了解Java語(yǔ)言中的并發(fā)性選項(xiàng)有何不同

    這篇文章主要介紹了深入了解Java語(yǔ)言中的并發(fā)性選項(xiàng)有何不同,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • java檢查數(shù)組是否有重復(fù)元素的方法

    java檢查數(shù)組是否有重復(fù)元素的方法

    這篇文章主要介紹了java檢查數(shù)組是否有重復(fù)元素的方法,涉及java針對(duì)數(shù)組元素的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • springboot?ElasticSearch如何配置自定義轉(zhuǎn)換器ElasticsearchCustomConversions

    springboot?ElasticSearch如何配置自定義轉(zhuǎn)換器ElasticsearchCustomConver

    這篇文章主要介紹了springboot?ElasticSearch如何配置自定義轉(zhuǎn)換器ElasticsearchCustomConversions問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • IDEA 單元測(cè)試報(bào)錯(cuò):Class not found:xxxx springboot的解決

    IDEA 單元測(cè)試報(bào)錯(cuò):Class not found:xxxx springb

    這篇文章主要介紹了IDEA 單元測(cè)試報(bào)錯(cuò):Class not found:xxxx springboot的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java實(shí)現(xiàn)復(fù)原IP地址的方法

    Java實(shí)現(xiàn)復(fù)原IP地址的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)復(fù)原IP地址的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評(píng)論

徐闻县| 岳阳市| 安塞县| 临邑县| 闸北区| 彭泽县| 达州市| 文山县| 陆良县| 昌都县| 德安县| 专栏| 温宿县| 崇信县| 海阳市| 铁岭县| 西畴县| 明光市| 闵行区| 精河县| 嘉定区| 韶关市| 延长县| 元氏县| 和林格尔县| 页游| 剑阁县| 阜康市| 德兴市| 宜昌市| 建瓯市| 绥芬河市| 二连浩特市| 梅河口市| 钟祥市| 图片| 亚东县| 海林市| 运城市| 新源县| 泸西县|