1.Maven介紹
Maven是一個基于項目對象模型(POM)的概念的純java開發(fā)的開源的項目管理工具。主要用來管理java項目忠售,進(jìn)行依賴管理(jar包管理卦方,能自動分析項目所需的依賴軟件包盼砍,并到Maven倉庫區(qū)下載)和項目構(gòu)建(項目編譯衬廷、打包、測試宁昭、部署)积仗。此外還能分塊開發(fā)寂曹,提高開發(fā)效率隆圆。
2.Maven下載
http://maven.apache.org/download.cgi
3. Maven安裝
3.1 解壓
注意: 解壓文件盡量不要放在含有中文或者特殊字符的目錄下渺氧。
解壓后侣背,有如下目錄:
bin:含有mvn運行的腳本
boot:含有plexus-classworlds類加載器框架,Maven 使用該框架加載自己的類庫。
conf:含有settings.xml配置文件
lib:含有Maven運行時所需要的java類庫
3.2 環(huán)境變量
maven依賴java環(huán)境厦取,所以要確保java環(huán)境已配置好 (maven-3.3+ 需要jdk7+)
maven本身有2個環(huán)境變量要配置:
MAVEN_HOME = maven的安裝目錄
PATH = maven的安裝目錄下的bin目錄
3.3 測試
查看maven版本信息:mvn -v
4.Maven的配置
maven的conf目錄下消别,有maven的配置文件
settings.xml
添加<localRepository>
配置maven的 "本地倉庫" 位置,用于存放項目中的相關(guān)依賴(比如 所有jar
)
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 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>D:\Program Files\maven\myrepository</localRepository>
在
<profiles>
標(biāo)簽中 增加 一個<profile>
標(biāo)簽岁经,限定maven項目默認(rèn)的jdk版本.
內(nèi)容如下:
<profiles>
<!-- 在已有的profiles標(biāo)簽中添加profile標(biāo)簽 -->
<profile>
<id>myjdk</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
<!-- 讓增加的 profile生效 -->
<activeProfiles>
<activeProfile>myjdk</activeProfile>
</activeProfiles>
5.倉庫
講完了maven的基本配置,我們來介紹一下倉庫的概念
Maven 倉庫
在 Maven 的術(shù)語中塘慕,倉庫是一個位置
(place)图呢。
Maven 倉庫是項目中依賴的第三方庫蛤织,這個庫所在的位置叫做倉庫
指蚜。
在 Maven 中摊鸡,任何一個依賴免猾、插件或者項目構(gòu)建的輸出掸刊,都可以稱之為構(gòu)件
。
Maven 倉庫能幫助我們存儲牌芋、管理構(gòu)件的地方躺屁。
操作模式:開發(fā)人員定義簡單的配置驯击,描述需要哪些依賴徊都,maven自動從倉庫中下載依賴(jar).
5.1 倉庫分類
5.2本地倉庫
1.在安裝 Maven 后并不會創(chuàng)建主之,第一次執(zhí)行 maven 命令時才創(chuàng)建槽奕。
2.Maven 所需要的構(gòu)件都是直接從本地倉庫獲取的粤攒。
如果本地倉庫沒有夯接,它會首先嘗試從遠(yuǎn)程倉庫下載構(gòu)件至本地倉庫,然后再使用本地倉庫的構(gòu)件凭需。
3.默認(rèn)情況下粒蜈,不管Linux還是 Windows枯怖,每個用戶在自己的用戶目錄下都有一個路徑名為
.m2/respository/
的本地倉庫目錄度硝∪锍蹋可以在setttings.xml中修改藻茂。
5.3 遠(yuǎn)程倉庫
5.3.1中央倉庫
Maven 中央倉庫是由 Maven 社區(qū)提供的倉庫优俘,
其中包含了絕大多數(shù)流行的開源Java構(gòu)件帆焕。是默認(rèn)的遠(yuǎn)程倉庫视搏。(網(wǎng)站在國外浑娜,網(wǎng)速杠杠的筋遭,絕對超過5kb/s)
https://mvnrepository.com/ 可以搜索需要的依賴的相關(guān)信息(倉庫搜索服務(wù))
http://repo.maven.apache.org/maven2/ 中央倉庫地址
5.3.2 遠(yuǎn)程倉庫(自建的遠(yuǎn)程倉庫)
如果 Maven 在中央倉庫中也找不到依賴的文件,它會停止構(gòu)建過程并輸出錯誤信息到控制臺乖篷。 為避免這種情況豁鲤,Maven 提供了遠(yuǎn)程倉庫的概念琳骡,它是開發(fā)人員自己定制倉庫楣号。 比如aliyun倉庫(http://maven.aliyun.com/nexus/content/groups/public/)
(我用阿里云主要是因為它快炫狱,畢竟是國內(nèi)的網(wǎng)站毕荐,但我搜索一般上mvn官網(wǎng)搜索憎亚,阿里云的搜索就是渣啊~~~~)
6. idea中使用Maven
6.1 在idea中關(guān)聯(lián)maven
6.2創(chuàng)建一個Maven項目
6.2.1 選擇骨架
骨架中包含一些初始化的項目結(jié)構(gòu)
create_prj1.jpg
6.2.2 指定項目名稱
6.2.3 設(shè)置Maven
6.2.4項目位置
6.2.5 項目結(jié)構(gòu)
1> src/main/java 存放源代碼,建包扳缕,放項目中代碼(service,dao,User,....)
2> src/main/resources 書寫配置文件躯舔,項目中的配置文件(jdbc.properties)
3> src/test/java 書寫測試代碼粥庄,項目中測試案例代碼
4> src/test/resources 書寫測試案例相關(guān)配置文件
5> 項目根/pom.xml (project object model) maven項目核心文件惜互,其中定義項目構(gòu)建方式(war包训堆,jar包坑鱼,默認(rèn)為jar包鲁沥,web項目用war包)黍析,聲明依賴等
注意:項目中的建包,建類奄抽,執(zhí)行逞度,都和普通項目無差異
create_prj5.jpg
6.3 導(dǎo)入依賴jar
建好項目后档泽,需要導(dǎo)入需要的jar馆匿,要通過【坐標(biāo)】(GAV)
1. 每個構(gòu)件都有自己的坐標(biāo)(標(biāo)識) = groupId + artifactId + version = 項目標(biāo)識 + 項目名 + 版本
2. 在maven項目中只需要配置坐標(biāo)渐北,maven便會自動加載對應(yīng)依賴恃锉。刪除坐標(biāo)則會移除依賴
3. jar包并不會導(dǎo)入到項目目錄中破托,只是maven幫助做了關(guān)聯(lián)炼团。但在打包部署項目時會攜帶對應(yīng)依賴
4. 而且瘟芝,如果導(dǎo)入了依賴A锌俱,而A中又依賴了B贸宏,則B會被自動加載吭练。
6.3.1 依賴的查找
依賴查找服務(wù):https://mvnrepository.com/ 鲫咽,獲得依賴的坐標(biāo)分尸,在maven項目中導(dǎo)入箩绍。(個人推薦每個人都準(zhǔn)備個個人依賴庫材蛛,打好注解方便使用)
1.mvn官網(wǎng)搜索
2.進(jìn)入依賴詳情頁
6.3.2 導(dǎo)入依賴
在項目的pom文件中dependency4.jpg
6.3.3 同步依賴
引入坐標(biāo)(GAV)之后同步依賴卑吭,確認(rèn)導(dǎo)入
6.3.4 依賴生命周期
項目中導(dǎo)入的依賴可以做生命周期的管理
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
<!-- 生命周期 -->
<scope>compile</scope>
</dependency>
**maven有生命周期如下:
1compile
:缺省值吐绵,適用于所有階段(測試己单,編譯纹笼,運行廷痘,打包)笋额,會隨著項目一起發(fā)布(被打包)
2provided
:類似compile兄猩,期望JDK枢冤、容器或使用者會提供這個依賴袁波。如servlet.jar參與測試谒拴,編譯梅屉,不會被打包
3runtime
:只在運行時使用坯汤,如 jdbc6.jar惰聂,適用運行和測試階段,會被一起發(fā)布
4test
:只在測試時使用杆故,用于編譯和運行測試代碼处铛,如 junit.jar撤蟆,不會隨項目發(fā)布
5system
:類似provided家肯,但Maven不會在Repository中查找它讨衣,要在本地磁盤目錄中查找,參與編譯反镇,測試愿险,打包辆亏,運行扮叨。
6.4 創(chuàng)建Web項目
6.4.1 選擇web骨架
6.4.2 定義項目坐標(biāo)
6.4.3 選擇maven
6.4.4 選擇項目磁盤位置
6.4.5 maven-web項目結(jié)構(gòu)
6.4.6 導(dǎo)入依賴
maven-web項目中沒有攜帶servlet相關(guān)的依賴狸捅,所以需要導(dǎo)入尘喝。
否則,servlet相關(guān)的組件不能使用置吓,jsp也不能使用
7. idea-tomcat
7.1 編輯運行環(huán)境
7.2 新增tomcat-server
7.3 選擇tomcat位置
7.4 tomcat細(xì)節(jié)
8. 部署web項目
8.1 新增部署
8.2 增加artifacts
如下友题,項目部署有兩種選擇:war和war-exploded
war
:將項目實際部署到tomcat的web-apps目錄中.
war-exploded
:并不會真正部署到tomcat的web-apps目錄度宦,tomcat直接訪問項目內(nèi)容(我們選這個)
deploy2.jpg
部署.jpg
8.3 設(shè)置訪問路徑
8.4 啟動tomcat
9.Aliyun倉庫(必需)
中央倉庫在國外凫海,下載速度很慢行贪,國內(nèi)的aliyun倉庫是一款很優(yōu)秀的maven倉庫建瘫。強(qiáng)烈建議使用
在setting.xml文件中配置如下信息
<mirrors>
<mirror>
<id>aliyun</id>
<!-- 中心倉庫的 mirror(鏡像) -->
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<!-- aliyun倉庫地址 以后所有要指向中心倉庫的請求殷蛇,都由aliyun倉庫接替-->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
10.maven特性
10.1 傳遞性
10.1 傳遞性
所謂傳遞性粒梦,是指匀们,在項目中導(dǎo)入了依賴A泄朴,而A內(nèi)部依賴了B祖灰,則A會自動觸發(fā)B也被導(dǎo)入項目
好處:沒必要導(dǎo)入所有依賴在項目中,傳遞性會自動導(dǎo)入一些依賴。簡化依賴導(dǎo)入管理
壞處:jar沖突
10.1.1 jar沖突
<!-- 沖突示例 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
jar沖突:A依賴B B依賴C和d-1.0 c依賴d-2.0陌兑。則此時導(dǎo)入A依賴饿凛,那么項目中會采用d-1.0 還是 d-2.0?
maven默認(rèn)的選擇原則是“最短路徑”
:
1 d-1.0的路徑 A->B->d-1.0
2 d-2.0的路徑 A->B->C->d-2.0 則最終選擇的是d-1.0 ( 如果路徑等長涧窒,則先聲明的優(yōu)先 )
解決方案
默認(rèn)的選擇原則明顯是不能符合實際的需求的纠吴,所以有其他設(shè)置可以改變默認(rèn)原則
1> 排除原則:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.6.RELEASE</version>
<exclusions>
<!-- 排除一個依賴戴已,則此依賴不會被spring-context-suport傳遞導(dǎo)入 -->
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
2> 明確定義:直接定義<dependency>
,則根據(jù)最短路徑糖儡,設(shè)置明確版本
3> 在父項目中定義,則子項目中在傳遞依賴時會以父項目中的聲明為準(zhǔn)金闽。
10.1.2 傳遞依賴范圍
前置概念:
項目A中 依賴 B庫 ,B庫 依賴C庫呐矾;
則A對B是第一直接依賴
蜒犯,B對C是第二直接依賴
罚随,A對C是傳遞性依賴
淘菩。
如果第一直接依賴范圍是:compile狭郑,第二直接依賴范圍:compile翰萨,則傳遞性依賴范圍就是:compile
則亩鬼,傳遞性依賴
的范圍取決于第一和第二直接依賴
雳锋。
compile ( 測玷过、編、運) | runtime( 測咆瘟、運) | provide( 測飞蛹,編) | test( 測 ) | |
---|---|---|---|---|
complie | compile | runtime | - | - |
runtime | runtime | runtime | - | - |
provide | provide | provide | provide | - |
test | test | test | - | - |
如上表格:第一列是第一直接依賴范圍卧檐,第一行是第二直接依賴霉囚,交叉的格子是傳遞性依賴范圍。
解釋第一行:第一compile盅粪,第二compile票顾,則傳遞compile奠骄;
? 第二runtime含鳞,則傳遞runtime; (B運行時需要C民晒,所以A也要保證運行時有C)
? 第二provide潜必,則不加載傳遞依賴磁滚;( A不需要測試B,也不需要編譯B晒他,所以不需要C)
? 第二test陨仅,則不加載穿刺依賴灼伤;(A不需要測試B狐赡,所以不需要C)
其他行,也是同樣的邏輯關(guān)系发皿。
結(jié)論:A依賴B穴墅,B依賴C ==> A中不一定會加載C皇钞;即使加載C夹界,C的scope也會有變動可柿。
10.2 繼承
- 多個maven項目間難免有重復(fù)的pom配置复斥,重復(fù)的配置沒必要重復(fù)寫目锭,maven提供了pom的父子集成機(jī)制痢虹,類似java的父子類。將共用的pom配置定義在父pom中糜值,自pom繼承后就等價持有了父pom中的內(nèi)容瓢阴。實現(xiàn)pom復(fù)用荣恐。
- 項目中的諸多依賴,需要統(tǒng)一管理版本累贤,不建議每個開發(fā)者隨意指定版本叠穆。可以在父項目中聲明版本信息,子項目延用即可
10.2.1 定義父項目
定義空白的maven項目(不用寫任何代碼臼膏,只用他的pom文件)
extends.jpg
注意:子項目中如果明確定義了版本硼被,則父項目中的聲明會失效嚷硫。所以父項目中聲明的版本脆贵,子項目中不允許再定義卖氨。
10.2.2 子項目繼承
子項目pom中繼承父pom
extends2.jpg
10.3 聚合
一個項目(
project
),可以分為多個模塊(module
)系吭,使得項目更加層次清晰贫导,利于管理。利于模塊復(fù)用。
模塊的劃分掀亩,常用的方式之一:
基于MVC劃分模塊
抬驴,進(jìn)一步樹立項目層次,對于大型項目尤為實用按傅。
每個模塊都是一個單獨的maven項目狂秦,由一個父項目來做聚合牛柒。
模塊之間可以互相依賴。
對父項目做編譯虑瀑,清理扔水,打包等行為會傳播給所有模塊主届。
10.3.1 創(chuàng)建父模塊
可以基于 “quick-start”骨架建立項目绘闷,或建立一個空白項目均可。
父模塊必須是pom打包!再菊!泛豪,其他沒特殊要求。
聚合1.jpg
10.3.2 創(chuàng)建子模塊
父模塊作為:Project,再建項目作為:Module
注意:dao和service模塊打包格式為jar,web模塊打包格式為war
-
在父模塊上 "右鍵", 為其新建 Module
聚合2.jpg
2. Module的創(chuàng)建盖文,選擇骨架時,按需選擇即可;如下填寫Module的項目名即可
3. 創(chuàng)建完畢后,如下
4. 重復(fù)如上過程,再多創(chuàng)建幾個Module
5. 父項目的pom套腹,已經(jīng)發(fā)生了改變,<moludels>
標(biāo)簽即在做多模塊聚合
10.3.3 父項目中定義版本管理
<!-- 共用的依賴定義 -->
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
....
</dependencies>
<!-- 依賴版本統(tǒng)一管理 -->
<dependencyManagement>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
....
</dependencyManagement>
-
統(tǒng)一管理:
- 如上可以避免在每個子模塊中都聲明版本號瓦糕,這樣想升級或者切換到另一個版本時圣勒,只需要在父模塊里更新吁峻,不需要任何一個子模塊的修改帮匾;
-
自定義:
- 如果某個子模塊需要另外一個版本號時螺句,只需要在dependencies中聲明一個版本號即可佣蓉。子模塊就會使用子模塊聲明的版本號义辕,不繼承于父模塊版本號傀蚌。
在做依賴管理時窜醉,也有時會在父項目中不做依賴管理琅催,而是明確導(dǎo)入所有依賴杰捂,子模塊直接繼承后就擁有哪些依賴。service模塊只需要單獨導(dǎo)入dao湿弦,web模塊只需要單獨導(dǎo)入service班利。
10.3.4 子模塊中定義內(nèi)容
各個模塊中彻消,分別定義對應(yīng)的依賴央勒、代碼井濒、配置者甲。
子模塊中需要的配置文件刽辙,可以由子模塊持有朦乏,也可以統(tǒng)一交給web模塊持有。
來自不同模塊的組件間的注入,編碼不變。
dao模塊议泵,定義所有DAO厢汹。其中的pojo
也可以分為一個單獨的模塊搭综。
service模塊奋姿,定義所有Service類寓免。需要導(dǎo)入dao模塊,進(jìn)而注入其中的DAO組件
web模塊踩寇,定義所有的Controller類鼠冕,需要導(dǎo)入service模塊(同上)
10.3.5 測試
如果dao模塊自己持有配置叉趣,則可以在dao模塊進(jìn)行測試梢什。反之可以將dao模塊導(dǎo)入到web模塊,在web模塊中測試dao僻他。
Service測試同理翩瓜。
web模塊的測試,可以直接將web模塊部署到tomcat即可測試夸楣。
10.3.6 部署
在父模塊所在目錄下幢泼,直接執(zhí)行:
mvn package
, 即可完成所有模塊的打包孵班,且web模塊的war包中會包含dao房午,service批狐,pojo模塊的jar食零。
直接部署web模塊的war即可百宇。
10.3.7 相關(guān)指令
- 測試憋肖,對父模塊做 打包操作
mvn package - 測試,對父模塊做 清理并編譯
mvn clean compile - 測試,對父模塊做 清理并打包
mvn clean package - 注意:對父模塊做的操作都會同步到每個模塊上。
11. 私服
私服是架設(shè)在局域網(wǎng)的一種特殊的遠(yuǎn)程倉庫,目的是代理遠(yuǎn)程倉庫及部署第三方構(gòu)件晴氨。
有了私服之后瘪贱,當(dāng) Maven 需要下載構(gòu)件時嚣州,直接請求私服佳吞,私服上存在則下載到本地倉庫滥嘴;否則足绅,私服請求外部的遠(yuǎn)程倉庫捷绑,將構(gòu)件下載到私服,再提供給本地倉庫下載氢妈。
私服可以解決在企業(yè)做開發(fā)時每次需要的jar包都要在中心倉庫下載,且每次下載完只能被自己使用,不能被其他開發(fā)人員使用
所謂私服就是一個服務(wù)器,但是不是本地層面的,是公司層面的,公司中所有的開發(fā)人員都在使用同一個私服
我們可以使用專門的 Maven 倉庫管理軟件來搭建私服粹污,比如:Apache Archiva,Artifactory首量,Sonatype Nexus壮吩。這里我們使用
Sonatype Nexus
11.1 Nexus安裝
- 官網(wǎng):https://blog.sonatype.com/
- 下載nexus-2.x-bundle.zip,解壓即可
- 解壓后在bin目錄中執(zhí)行:
nexus install
在系統(tǒng)中安裝nexus服務(wù)
nexus uninstall
卸載nexus服務(wù)
nexus start
啟動服務(wù)
nexus stop
停止服務(wù) - 訪問私服:http://localhost:8081/nexus/
-
登錄私服:admin/admin123
私服3.jpg
11.2 Nexus登錄
11.3 倉庫列表
group:包含多個倉庫,通過group庫的地址可以從包含的多個倉庫中查找構(gòu)件 hosted: 私服 服務(wù)器本地的倉庫加缘,其中存儲諸多構(gòu)件鸭叙。 3rd 存放中央倉庫沒有的 ,如ojdbc.jar拣宏,可以上傳到私服的該庫中沈贝。 Releases 存放項目的穩(wěn)定發(fā)布版本,一個模塊做完后如果需要共享給他人勋乾,可以上傳到私服的該庫宋下。 Snapshots 對應(yīng)不穩(wěn)定的發(fā)布版本 proxy:代理倉庫,其會關(guān)聯(lián)一個遠(yuǎn)程倉庫, 比如中央倉庫辑莫,aliyun倉庫学歧,向該倉庫查找構(gòu)件時,如果沒有會從其關(guān)聯(lián)的倉庫中下載各吨。 |
---|
私服_list.jpg
|
11.4 導(dǎo)入第三方j(luò)ar到私服
有些jar在中心庫中是沒有的枝笨,比如oracle的數(shù)據(jù)庫驅(qū)動jar:ojdb6.jar. 可以自己下載jar,然后上傳到私服中揭蜒。
此種構(gòu)件横浑,我們建議放在 "3rd party" 倉庫中 ( 存放第三方構(gòu)件 )
私服_addjar1.jpg
私服_addjar2.jpg
私服_addjar3.jpg
私服_addjar4.jpg
11.5 maven配置私服
在maven中配置私服,使得maven可以從私服上獲取構(gòu)件
11.5.1 倉庫組
而此時就有問題忌锯,私服中有很多倉庫伪嫁,每個倉庫都有自己的url,則項目中配置哪個倉庫呢 ?
私服中有一個倉庫組偶垮,組中包含多個倉庫张咳,可以指定倉庫組的url,即可從多個倉庫中獲取構(gòu)件
私服_deploy2.jpg
11.5.2 maven關(guān)聯(lián)私服
配置settings.xml似舵,設(shè)置私服地址脚猾、認(rèn)證等信息
配置私服 username/password
私服_deploy1.jpg
More Actions配置私服為maven的遠(yuǎn)程倉庫,注意:【此處的repository的id要和 上圖中server的id保持一致砚哗,才可以在私服認(rèn)證通過】
私服_deploy3.jpg
More Actions使profile配置生效
私服_deploy4.jpg
至此龙助,maven項目中需要依賴時,maven會從私服中下載
11.6 maven項目部署到私服
在項目的pom中配置部署倉庫位置:
執(zhí)行 :mvn deploy
即可將項目部署到私服對應(yīng)的倉庫中,此時項目中的打包方式多為jar
私服_deploy5.jpg
注意:如上的repository
的id
依然是要和settings.xml中配置的server
中的id
對應(yīng)才能通過私服的認(rèn)證
12. mave常用指令
mvn compile 編譯
mvn clean 清除上次編譯的內(nèi)容
mvn clean compile 清除并編譯
mvn package 打包
13. Resources
Resources插件提鸟,負(fù)責(zé)將配置文件復(fù)制到編譯目錄中军援。兩種配置文件,main-resources称勋、test-resources
Maven默認(rèn)只關(guān)注 resources目錄下的配置文件胸哥,其他目錄下的配置文件會被忽略。
13.1 增加資源目錄
如果有配置文件不在 resources目錄下赡鲜,則需要額外配置:
<build>
<resources>
<!-- src/main/java目錄也是一個資源目錄空厌,其中的配置文件也會被復(fù)制到編譯目錄 -->
<resource>
<directory>src/main/java</directory>
</resource>
</resources>
</build>
13.2 排除或包含
如果有資源目錄中有需要排除的配置文件,可以如下設(shè)置:
<resource>
<directory>src/main/java</directory>
<!--**代表src/main/java下的子目錄或子目錄的子目錄..
*.txt 代表所有txt文件银酬。
所有文件可以用:*.* 或 *
【排除所有txt文件嘲更,其他文件都會被復(fù)制】
-->
<excludes>
<exclude>**/*.txt</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/java</directory>
<!--**代表src/main/java下的子目錄或子目錄的子目錄..
*.txt 代表所有txt文件。
所有文件可以用:*.* 或 *
【復(fù)制所有txt文件揩瞪,其他文件都會被忽略】
-->
<includes>
<include>**/*.txt</include>
</includes>
</resource>