maven的基本使用
1、maven的基本介紹
Maven 是一個項目管理工具,可以對 Java 項目進行構建、依賴管理。Maven 也可被用于構建和管理各種項目,例如 C#,Ruby,Scala 和其他語言編寫的項目。Maven利用一個中央信息片斷能管理一個項目的構建、報告和文檔等步驟。
maven 可以管理 jar 文件,能自動下載 jar 和它的文檔、源代碼,能管理 jar 之間的依賴。Maven 能夠幫助開發者完成以下工作:構建、文檔生成、報告、依賴、SCMs、發布、分發、郵件列表。
為什么需要maven?:由于 Java 的生態非常豐富,無論你想實現什么功能,都能找到對應的工具類,這些工具類都是以 jar 包的形式出現的,例如 Spring,SpringMVC、MyBatis、數據庫驅動,等等,都是以 jar 包的形式出現的,jar 包之間會有關聯,在使用一個依賴之前,還需要確定這個依賴所依賴的其他依賴,所以,當項目比較大的時候,依賴管理會變得非常麻煩臃腫,這是 Maven 解決的第一個問題。
Maven 還可以處理多模塊項目。簡單的項目,單模塊分包處理即可,如果項目比較復雜,要做成多模塊項目,例如一個電商項目有訂單模塊、會員模塊、商品模塊、支付模塊…,一般來說,多模塊項目,每一個模塊無法獨立運行,要多個模塊合在一起,項目才可以運行,這個時候,借助 Maven 工具,可以實現項目的一鍵打包。
2、安裝配置maven
2.1、下載安裝maven
Maven 是 Java 項目,因此必須先安裝 JDK,JDK 安裝配置可參考:http://www.rzrgm.cn/wenxuehai/p/9492355.html

然后下載 maven,maven 的下載地址:http://maven.apache.org/download.cgi。下載路徑如下圖:

新版本可能會有一些問題,我們推薦使用 3.3.9 版本,歷史版本下載可參考:https://blog.csdn.net/timexx/article/details/107827497
官網下載可能比較慢,提供一個 3.3.9 版本下載鏈接:鏈接:https://pan.baidu.com/s/1dLUrGfmdQq6UpVwze2Xmyg 提取碼:dhrj
安裝 maven 直接將下載的壓縮包解壓即可,解壓下載文件后可看到目錄如下:

2.2、配置maven環境變量
然后需要配置環境變量,配置環境變量跟 JDK 類似。
- 先在系統變量當中添加一個環境變量 MAVEN_HOME,變量值為 maven 的安裝目錄的根目錄,比如:E:\develop\apache-maven-3.3.9
- 然后找到系統變量 Path,給該變量的值后面添加:;%MAVEN_HOME%\bin 即可
可參考:https://www.runoob.com/maven/maven-setup.html
檢驗 maven 安裝是否成功,直接在命令窗口輸入 mvn -v ,如果有輸出 maven 的版本說明安裝成功:

3、maven約定的目錄結構
Maven 提倡使用一個共同的標準目錄結構,Maven 使用約定優于配置的原則,大家盡可能的遵守這樣的目錄結構。一個使用Maven管理的普通的Java項目,它的目錄結構默認如下:
MavenProject
|-- pom.xml maven項目的配置文件。對項目中的所有jar包依賴進行統一管理
|-- src
|-- main
| -- java 存放項目源代碼
| -- resources(可省略) 存放項目配置文件 .xml等
|-- test(可省略)
| -- java 存放單元測試源代碼
| -- resources 存放單元測試資源文件 .xml等
|-- target(由maven生成) 存放所有編譯、打包生成的文件
|-- classes 存放項目源代碼編譯輸出的字節碼文件
|-- test-classes 存放測試代碼編譯輸出的字節碼文件
默認情況下,項目在編譯過后,會將 src/main/java 編譯過后的字節碼文件和 src/main/resource 中的文件放在 target/classes 目錄下。但是,src/main/java 目錄下的非包且非java的文件在編譯過后并不會自動被拷貝在 target/classes 目錄下,而是會丟失。如果我們想要將 src/main/java 目錄下的非包且非java的文件也一并拷貝在 target/classes 目錄下,則需要在 pom.xml 文件的 build 標簽下進行配置。
4、maven倉庫配置
Maven 倉庫是項目中依賴的第三方庫。在 Maven 中,任何一個依賴、插件或者項目構建的輸出,都可以稱之為構件。Maven 倉庫能幫助我們管理構件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
Maven 倉庫有以下幾種類型:
- 本地倉庫(local)
- 中央倉庫
- 私服倉庫
除本地倉庫以外的倉庫都可以叫做遠程倉庫。
當項目編譯時,Maven首先從本地倉庫中尋找項目所需的Jar包,若本地倉庫沒有,再到Maven的中央倉庫下載所需Jar包。這 3 個倉庫中,jar 包的查找順序如下:

4.1、本地倉庫
Maven 的本地倉庫,在安裝 Maven 后并不會創建,它是在第一次執行 maven 命令的時候才被創建。默認位置:當前用戶名\.m2\repository。
運行 Maven 的時候,Maven 所需要的任何構件都是直接從本地倉庫獲取的。如果本地倉庫沒有,它會首先嘗試從遠程倉庫下載構件至本地倉庫,然后再使用本地倉庫的構件。
本地倉庫默認位置在 當前用戶名\.m2\repository,我們也可以修改本地倉庫的位置。在 maven 安裝目錄下的 conf/settings.xml 文件中可以修改,在該配置文件中可以看到 localRepository 節點被注釋掉了,我們可以直接復制該節點,將值修改為本地路徑即可,如下:
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository> --> <localRepository>E:/develop/maven_repository</localRepository>
當你運行 Maven 命令,Maven 會將下載依賴的文件放到你指定的路徑中。
4.2、中央倉庫
中央倉庫屬于遠程倉庫的一種,Maven 中央倉庫是由 Maven 社區提供的倉庫,其中包含了絕大多數流行的開源Java構件,以及源碼、作者信息、SCM、信息、許可證信息等,一般來說,簡單的Java項目依賴的包都可以在這里下載到。
中央倉庫需要通過網絡才能訪問。低版本的 maven 中,比如 maven-2.0.10,可以在 ${M2_HOME}/lib/maven-2.0.10-uber.jar 中找到 pom.xml 配置文件。但是在 3.xxx 版本及之后的版本,在 maven 安裝目錄下的 lib/maven-model-builder-${version}.jar 下,可以在 \org\apache\maven\model\pom-4.0.0.xml 取到 pom-4.0.0.xml 配置文件,該配置文件是所有 Maven POM 的父 POM,所有Maven項目繼承該配置。
你可以在 pom-4.0.0.xml 配置文件中找到如下配置信息:
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
可以看到,中央倉庫的id為central,遠程url地址為 https://repo.maven.apache.org/maven2,它關閉了snapshot版本構件下載的支持。
4.3、私服倉庫
私服也屬于遠程倉庫的一種,一般來說,私服倉庫搭建在公司局域網內,專供公司內部開發人員提供服務,不是對外使用的。
4.4、配置中央倉庫
默認的中央倉庫地址為 https://repo.maven.apache.org/maven2,但是國外的遠程庫下載速度比較慢,甚至可能會出現無法訪問的問題,此時我們可以配置國內的倉庫,比如阿里云中央倉庫等。
4.4.1、在項目的 pom.xml 文件中配置中央倉庫
配置我們自己的遠程倉庫有很多好處,比如你有一個局域網的遠程倉庫,使用該倉庫能大大提高下載速度,繼而提高構建速度,也有可能你依賴的一個 jar 在 central 中找不到,它只存在于某個特定的公共倉庫,這樣你也不得不添加那個遠程倉庫的配置。
我們可以在項目的 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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <repositories> <repository> <id>maven-ali</id> <url>http://maven.aliyun.com/nexus/content/repositories/central</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> </repository> </repositories> <groupId>org.example</groupId> <artifactId>springmvc_maven_test01</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> ... </project>
<repositories>下面可以添加多個<repository> ,每個<repository>都有它唯一的ID,一個描述性的name,以及最重要的遠程倉庫的url。<releases><enabled>true</enabled></releases> 告訴Maven可以從這個倉庫下載 releases 版本的構件,而<snapshots><enabled>false</enabled></snapshots> 告訴Maven不要從這個倉庫下載 snapshot 版本的構件,禁止從公共倉庫下載snapshot構件是推薦的做法,因為這些構件不穩定,且不受你控制,你應該避免使用。當然,如果你想使用局域網內組織內部的倉庫,你可以激活snapshot的支持。
4.4.2、在maven安裝目錄下的settings.xml文件配置
在項目的 pom.xml 文件中可以配置中央倉庫,但是這樣每個項目都需要配置一遍,需要重復工作。我們可以直接在 maven 安裝目錄下的 conf/settings.xml 文件中配置中央倉庫。
找到 mirrors 標簽,添加如下配置:
<mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> --> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
可以看到 <mirrorOf> 的值是 central,意思就是用以上鏡像替代 Maven 自帶的中央倉庫。
5、maven項目配置文件pom.xml
maven 安裝目錄下的 setting.xml 主要用于配置 maven 的運行環境等一系列通用的屬性,是全局級別的配置文件。而 pom.xml 主要描述了項目的基本信息,用于描述項目如何構建,聲明項目依賴等等,是項目級別的配置文件。執行任務或目標時,Maven 會在當前目錄中查找 POM,然后讀取 POM,獲取所需的配置信息,然后執行目標。
pom(project object model)即項目對象模型,maven 把一個項目的結構和內容抽象成一個模型,在 xml 文件中進行聲明,以方便進行構建和描述。
一個基本的pom.xml文件配置如下:
<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"> <!-- maven模型的版本,對于maven2和maven3來說,只能是4.0.0 --> <modelVersion>4.0.0</modelVersion>
<!-- 公司或者組織的唯一標志,一般是公司域名的倒寫,或者是公司域名倒寫+項目名。并且配置時生成的路徑也是由此生成, 如com.companyname.project-group,maven會將該項目打成的jar包放本地路徑:/com/companyname/project-group --> <groupId>com.companyname.project-group</groupId> <!-- 項目的唯一ID,一個groupId下面可以有多個項目,通過artifactId來區分 --> <artifactId>project</artifactId> <!-- 項目的版本號 --> <version>1.0.0</version> </project>
所有 POM 文件都需要 <project> 標簽元素和該標簽下的三個必需字段:groupId,artifactId,version。
groupId + artifactId + version = 坐標,坐標可用于標識互聯網中的唯一資源。在Maven中,坐標是Jar包的唯一標識,Maven通過坐標在倉庫中找到項目所需的Jar包。
5.1、pom.xml配置文件常見標簽
pom.xml 配置文件的常見標簽:
- <package>:項目打包的類型,例如jar、war、ear、pom等
- <dependencies>:項目相關的所有依賴
- <properties>:定義一些常量
- <build>:設置 maven 在進行項目的構建時的配置
使用示例如下:
<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"> <groupId>com.companyname.project-group</groupId> <artifactId>project</artifactId> <version>1.0.0</version> <!--項目打包的類型,例如jar、war、ear、pom等,默認是jar-> <packaging>jar</packaging> <!--項目相關的所有依賴 --> <dependencies> <dependency> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <version>xxx</version> </dependency> <dependency> ... </dependency> </dependencies> <!-- 在properties標簽中可以自定義一些標簽,以此來定義一些常量,在pom中的其它地方可以直接引用,使用方式如 :${test.uuid}。比如我們可以定義一些共用的依賴包版本號,這樣版本號需要修改時只需修改這里一個地方即可 --> <properties> <file.encoding>UTF-8</file.encoding> <test.uuid>123</test.uuid> <java.source.version>1.5</java.source.version> </properties> <build> <!-- 打包生成的包的文件名,默認值是${artifactId}-${version}。 --> <finalName>myPorjectName</finalName> <!-- 構建產生的所有文件存放的目錄,默認為${basedir}/target,即項目根目錄下的target --> <directory>${basedir}/target</directory> ... </build> </project>
6、maven的三套生命周期
Maven的生命周期就是對所有的構建過程進行抽象和統一。包含了項目的清理、初始化、編譯、測試、打包、集成測試、驗證、部署和站點生成等幾乎所有的構建步驟。Maven的生命周期是抽象的,即生命周期不做任何實際的工作,實際任務由插件完成,類似于設計模式中的模板方法。
Maven有三套相互獨立的生命周期,分別是
- clean:項目清理的處理
- default(build):項目部署的處理
- site:項目站點文檔創建的處理
每套生命周期各自包含一些階段(phase),這些 phase 就相當于 Maven 提供的統一的接口,然后這些 phase 的實現由 Maven 的插件來完成。階段是有順序的,后面的階段依賴于前面的階段。各個生命周期相互獨立,一個生命周期的階段前后依賴。
比如:執行 mvn clean 命令:將會調用clean生命周期的 clean 階段,實際上會執行 pre-clean 和 clean 階段;執行 mvn test 命令:調用 default 生命周期的 test 階段,實際執行 test 以及之前所有階段;執行 mvn clean install:調用 clean 生命周期的 clean 階段和 default 的install 階段,實際執行 pre-clean 和 clean,install 以及之前所有階段
6.1、clean生命周期
clean生命周期:清理項目,包含三個階段:
- pre-clean:執行清理前需要完成的工作
- clean:清理上一次構建生成的文件
- post-clean:執行清理后需要完成的工作
6.2、default(build)生命周期
default生命周期:構建項目,重要的 phase(階段)如下:
- validate:驗證工程是否正確,所有需要的資源是否可用。
- compile:編譯項目的源代碼。
- test-compile:編譯測試源碼
- test:使用合適的單元測試框架來測試已編譯的源代碼。
- Package:把已編譯的代碼打包成可發布的格式,比如jar。
- integration-test:如有需要,將包處理和發布到一個能夠進行集成測試的環境。
- verify:運行所有檢查,驗證包是否有效且達到質量標準。
- install:把包安裝到maven本地倉庫,可以被其他工程作為依賴來使用。
- Deploy:在集成或者發布環境下執行,將最終版本的包拷貝到遠程的repository,使得其他的開發者或者工程可以共享。
6.3、site生命周期
site生命周期:建立和發布項目站點,phase如下
- pre-site:生成項目站點之前需要完成的工作
- site:生成項目站點文檔
- post-site:生成項目站點之后需要完成的工作
- site-deploy:將項目站點發布到服務器
7、maven的常用命令
maven常用命令如下:
- mvn clean:清理。該命令會刪除 maven 編譯生成的目錄,即 target 目錄,但是已經 install 到本地倉庫中的包不會刪除。
- mvn compile:編譯項目主代碼,即 src/main 目錄下的 java 程序。編譯完成后會在項目根目錄下生成一個 target/classes 目錄,里面存放著 java 程序編譯之后生成的字節碼文件。并且 src/main/resource 目錄下的文件都會被放到 target/classes 目錄下
- mvn test-compile:編譯項目中 src/test目錄下的測試代碼。編譯完成后會在項目根目錄下生成一個 target/test-classes 目錄,里面存放著測試代碼編譯之后生成的字節碼文件。
- mvn test:運行所有的測試代碼
- mvn package:打包。按照 pom.xml 中的配置,將項目打成 jar 包或者 war 包。
- mvn install:安裝本項目包到本地倉庫,這樣項目包可以用作其他本地項目的依賴。
- mvn deploy:部署。將最終的項目包復制到遠程倉庫中與其他開發者和項目共享。
在命令行 CMD 上執行以上命令,需在命令行進入 pom.xml 所在目錄下即項目的根目錄下才能執行。
7.1、maven如何將web項目打包成war包
maven 將 java web 項目打包成 war 包,首先確認一下 pom.xml 中的配置的打包類型是打包成 war 包的:

確認好之后,通過命令行工具切換至該 web 項目的根目錄下,執行 mvn clean package 命令即可:

打包完成后,可以在該項目的根目錄下的 target 文件夾下找到一個 war 包。將該 war 包直接放到 tomcat 的 webapps 目錄下即可部署成功。

部署:

8、maven的插件
Maven 生命周期的每一個階段的具體實現都是由 Maven 插件實現的,Maven 實際上是一個插件框架,它的核心并不執行任何具體的構建任務,所有這些任務都交給插件來完成。例如編譯源代碼是由maven- compiler-plugin完成的。進一步說,每個任務對應了一個插件目標(goal),每個插件會有一個或者多個目標,
例如 maven- compiler-plugin 的 compile 目標用來編譯位于 src/main/java/ 目錄下的主源碼,testCompile 目標用來編譯位于 src/test/java/ 目錄下的測試源碼。我們在輸入 mvn 命令的時候 比如 mvn clean,clean 對應的就是 Clean 生命周期中的 clean 階段。但是 clean 的具體操作是由 maven-clean-plugin 插件來實現的。
用戶可以通過兩種方式調用 Maven 插件目標。第一種方式是將插件目標與生命周期階段綁定,這樣用戶在命令行只是輸入生命周期階段而已,例如輸入 mvn compile 命令,Maven 默認會將 maven-compiler-plugin 的 compile 目標與 compile 生命周期階段綁定,因此命令mvn compile 實際上是先定位到 compile這一生命周期階段,然后再根據綁定關系調用maven-compiler-plugin的compile目標。
第二種方式是直接在命令行指定要執行的插件目標,例如 mvn archetype:generate 就表示調用 maven-archetype-plugin 的 generate 目標,這種帶冒號的調用方式與生命周期無關。
插件配置示例:
<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"> <groupId>com.companyname.project-group</groupId> <artifactId>project</artifactId> <version>1.0.0</version> <build> <!-- 配置插件 --> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <!-- 插件名稱 --> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <!-- 在這里給插件進行一些配置 --> <configuration> <source>1.6</source> <!-- 源代碼使用的JDK版本 --> <target>1.6</target> <!-- 需要生成的目標class文件的編譯版本。一般而言,target與source是保持一致的,但是,有時候為了讓程序能在其他版本的jdk中運行,會存在target不同于source的情況 --> </configuration> </plugin> </plugins> </build> </project>
9、maven的依賴管理
依賴是 maven 項目引用的資源架包,依賴范圍就是這些資源 jar 包在 maven 項目中的作用范圍。maven 項目通過依賴范圍來控制何時引用資源架包,比如我們需要在編譯階段用到某個 jar 包,我們可以指定該 jar 包的作用范圍為 compile。
maven 的依賴范圍用 scope 關鍵字表示,有五種依賴范圍:
- compile:依賴范圍的默認值,如果maven項目中引入一個依賴,沒有添加scope依賴范圍,那么默認的就是compile。這表示該 maven 項目在編譯、測試、打包、安裝、部署階段都需要引用該依賴。
- test:表示該依賴包只和測試相關。
-
provided:表示maven項目只在編譯和測試時引用該依賴,如果將項目打包運行時,則不會引入該依賴。如 servlet-api,這是 web 項目常用的架包,在項目編譯和測試時都需要用到該架包,如果項目需要運行,則需要將項目部署到 tomcat 或其他 web 服務器上,但是 tomcat 中自帶了 servlet-api,如果 maven 項目中引入了 servlet-api,那么會和 tomcat 中的 servlet-api 產生沖突,所以可以使用 provided 限定 servlet-api,讓maven項目在打包時不再引入 servlet-api。
-
runtime和system:這兩個是不常用的。runtime 表示在測試和部署運行階段需要引入該依賴,在編譯階段不引入該依賴,如JDBC的驅動包,因為JDBC驅動是通過反射機制加載的,所以不參與項目編譯過程。system 的作用域和 provided 類似,表示引用倉庫之外的依賴,需要通過 systemPath 指定本地依賴的路徑,除了特殊情況基本不使用。
| 依賴范圍 | 是否作用于編譯階段 | 是否作用于測試執行階段 | 是否作用于部署運行階段 | |
| 1 | compile(默認值) | 是 | 是 | 是 |
| 2 | test | 否 | 是 | 否 |
| 3 | provided | 是 | 是 | 否 |
| 4 | runtime | 否 | 是 | 是 |
| 5 | system | 是 | 是 | 否 |
比如一個 java EE 項目,有 compile 和 test 作用范圍的依賴包。因為 compile 需要作用在打包部署運行階段,所以 compile 作用范圍的依賴包在打包過后會被 maven 自動放在 項目war包/WEB-INF/lib 目錄下;而 test 作用范圍的依賴包則不會出現在 war 包中。
配置示例,Junit 只在測試階段才起作用:
<?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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>maven_ee_01</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> </project>
10、maven中的資源拷貝插件
默認情況下,項目在編譯過后,會將 src/main/java 編譯過后的字節碼文件和 src/main/resource 中的文件放在 target/classes 目錄下。但是,src/main/java 目錄下的非包且非java的文件在編譯過后并不會自動被拷貝在 target/classes 目錄下,而是會丟失。如果我們想要將 src/main/java 目錄下的非包且非java的文件也一并拷貝在 target/classes 目錄下,則需要在 pom.xml 文件的 build 標簽下進行配置。
如果我們需要將 src/main/java 目錄下的資源文件也拷貝到編譯后(target/classes目錄對應的文件夾下)或者打包后的目錄下的話,就可以使用資源拷貝插件。示例如下:
<?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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>maven_ee_01</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <build> <!--resources標簽需配置在<build></build>中,用來指定讀取的配置文件或文件夾中的文件 --> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!--filtering是否開啟替換標簽,若文件中有類似${key}這樣的配置,就會根據maven的配置進行覆蓋,讓其使用真實值來填寫 true表示開啟替換,false表示不開啟替換,無此標簽表示不開啟替換 真實值是從pom中profiles的配置里面取的--> <filtering>false</filtering> </resource> </resources> </build> </project>

浙公網安備 33010602011771號