構(gòu)建工具之Maven的使用(二)

一、前言

上篇文章構(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

效果如下圖:

mvn_install_file.png

mvn_install_result.png

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é)果如下圖:


maven_dependency_tree.png

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é)果如下圖:

mvn_module.png

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配置文件,如下圖:
mvn_profile.png
  • 在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)注。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容