一、前言
上篇文章構(gòu)建工具之maven的使用(一)講了關(guān)于maven配置的一些技巧,通過對(duì)maven相關(guān)的配置達(dá)到我們想要的目的。今天這篇就講一些關(guān)于命令行的命令技巧,通過敲命令來使用maven提供的一些功能。大獅兄想說的是今天講的有些內(nèi)容通過idea的maven插件操作同樣能達(dá)到目的,但大獅兄習(xí)慣了各種敲鍵盤,所以今天的命令行技巧都是手敲命令的。放開雙手,讓它盡情的在鍵盤上翩翩起舞吧!
二、命令行技巧
1. 構(gòu)建jar包到本地倉庫命令行技巧
開發(fā)中我們會(huì)自定義開發(fā)或修改某些jar包,同時(shí)其他工程會(huì)依賴這個(gè)jar包,為了是jar包生效,我們需要把jar包構(gòu)建到本地倉庫。命令如下:
# -Dfile指定包文件路徑 -DgroupId指定groupId -DartifactId指定artifactId -Dversion指定version -Dpackaging指定包類型
mvn install:install-file -Dfile=/Users/lsl_mac/IdeaProject/flink_demo/target/flink_demo-1.0.jar -DgroupId=org.bigwinner -DartifactId=flink_demo -Dversion=1.0 -Dpackaging=jar
效果如下圖:


2. 排除依賴版本沖突命令行技巧
開發(fā)中我們會(huì)經(jīng)常遇到依賴版本沖突導(dǎo)致程序報(bào)錯(cuò)的問題,maven提供了一些命令可幫助我們快速排查依賴問題,命令如下:
# 打印所有依賴樹
mvn dependency:tree
# 打印依賴沖突樹
mvn dependency:tree -Dverbose
# 將依賴沖突樹導(dǎo)出
mvn dependency:tree -Dverbose > ./dependency.txt
# 指定打印某個(gè)包的依賴沖突樹
mvn dependency:tree -Dverbose -Dincludes=io.netty:netty-all (指定某個(gè)包)
結(jié)果如下圖:

3. 指定子模塊打包命令行技巧
大型的工程肯定包含多個(gè)模塊,為了節(jié)省打包時(shí)間,有時(shí)我們只需要對(duì)某個(gè)模塊進(jìn)行單獨(dú)打包,maven如下命令可以實(shí)現(xiàn):
# -pl 表示指定具體某個(gè)模塊,格式{groupId}:{artifactId};
# -am 表示同時(shí)處理選定模塊所依賴的模塊
mvn clean package -pl {groupId}:{artifactId} -am -Dmaven.test.skip=true
驗(yàn)證如下:
bigdata
├── HELP.md
├── README.md
├── bigdata.iml
├── boot-codegen
├── boot-core
├── boot-hbase
├── boot-kafka
├── boot-mysql
├── boot-pulsar
├── boot-web
├── mvnw
├── mvnw.cmd
├── pom.xml
└── uid-generator
bigdata目錄是父模塊,boot-web子模塊依賴boot-mysql子模塊,boot-mysql模塊依賴uid-generator子模塊。此時(shí)指定boot-web模塊打包,驗(yàn)證是否只有相關(guān)依賴的模塊被打包。執(zhí)行命令,結(jié)果如下圖:

4. 多開發(fā)環(huán)境打包命令行技巧
工作中我們一般會(huì)有多個(gè)環(huán)境的配置文件,例如:本地測試環(huán)境、開發(fā)測試環(huán)境、線上生產(chǎn)環(huán)境等,不同的環(huán)境對(duì)應(yīng)的某些配置不同,導(dǎo)致配置文件也不相同。打包時(shí)我們?nèi)绾巫宮aven自動(dòng)根據(jù)不同的環(huán)境打包不同的配置文件呢?步驟如下:
- 在resource文件夾下新建多個(gè)config配置文件,如下圖:

- 在pom文件中加入如下配置:
<profiles>
<!-- 本地測試環(huán)境 -->
<profile>
<id>loc</id>
<properties>
<!-- 注:active標(biāo)簽會(huì)在config.properties中生效 -->
<active>loc</active>
</properties>
</profile>
<!-- 開發(fā)測試環(huán)境 -->
<profile>
<id>dev</id>
<properties>
<!-- 注:active標(biāo)簽會(huì)在config.properties中生效 -->
<active>dev</active>
</properties>
<activation>
<!-- 默認(rèn)dev配置文件生效 即打包時(shí)會(huì)優(yōu)先打dev的配置文件 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 線上生產(chǎn)環(huán)境 -->
<profile>
<id>prd</id>
<properties>
<active>prd</active>
</properties>
</profile>
</profiles>
- 執(zhí)行以下maven命令:
# -P 指定生效的環(huán)境配置文件
# 驗(yàn)證打包是否準(zhǔn)確可通過反編譯查看config.properties文件中的profiles.active的值
mvn clean package -DskipTests -P prd
三、總結(jié)
以上就是今天大獅兄和大家分享的關(guān)于Maven命令行命令相關(guān)的內(nèi)容,包含多構(gòu)建jar包到本地倉庫、排除jar包版本依賴、指定子模塊打包、多開發(fā)環(huán)境打包。文章觀點(diǎn)或者結(jié)論亦或其他如有錯(cuò)誤,歡迎大家評(píng)論或者私信進(jìn)行斧正。同時(shí)如果此篇文章對(duì)大家有所幫助,也歡迎大家點(diǎn)贊、收藏、關(guān)注。