一、前言

上篇文章构建工具之maven的使用(一)讲了关于maven配置的一些技巧,通过对maven相关的配置达到我们想要的目的。今天这篇就讲一些关于命令行的命令技巧,通过敲命令来使用maven提供的一些功能。大狮兄想说的是今天讲的有些内容通过idea的maven插件操作同样能达到目的,但大狮兄习惯了各种敲键盘,所以今天的命令行技巧都是手敲命令的。放开双手,让它尽情的在键盘上翩翩起舞吧!

二、命令行技巧

1. 构建jar包到本地仓库命令行技巧

开发中我们会自定义开发或修改某些jar包,同时其他工程会依赖这个jar包,为了是jar包生效,我们需要把jar包构建到本地仓库。命令如下:

# -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
mvn_install_result

2. 排除依赖版本冲突命令行技巧

开发中我们会经常遇到依赖版本冲突导致程序报错的问题,maven提供了一些命令可帮助我们快速排查依赖问题,命令如下:

# 打印所有依赖树
mvn dependency:tree
# 打印依赖冲突树
mvn dependency:tree -Dverbose
# 将依赖冲突树导出
mvn dependency:tree -Dverbose > ./dependency.txt
# 指定打印某个包的依赖冲突树
mvn dependency:tree -Dverbose  -Dincludes=io.netty:netty-all (指定某个包)

结果如下图:

maven_dependency_tree

3. 指定子模块打包命令行技巧

大型的工程肯定包含多个模块,为了节省打包时间,有时我们只需要对某个模块进行单独打包,maven如下命令可以实现:

# -pl 表示指定具体某个模块,格式{groupId}:{artifactId};
# -am 表示同时处理选定模块所依赖的模块
mvn clean package -pl {groupId}:{artifactId} -am -Dmaven.test.skip=true

验证如下:

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子模块。此时指定boot-web模块打包,验证是否只有相关依赖的模块被打包。执行命令,结果如下图:

mvn_module

4. 多开发环境打包命令行技巧

工作中我们一般会有多个环境的配置文件,例如:本地测试环境、开发测试环境、线上生产环境等,不同的环境对应的某些配置不同,导致配置文件也不相同。打包时我们如何让maven自动根据不同的环境打包不同的配置文件呢?步骤如下:

  • 在resource文件夹下新建多个config配置文件,如下图:

mvn_profile

  • 在pom文件中加入如下配置:
            <profiles>
        <!-- 本地测试环境 -->
        <profile>
            <id>loc</id>
            <properties>
                  <!-- 注:active标签会在config.properties中生效 -->
                <active>loc</active>
            </properties>
        </profile>
        <!-- 开发测试环境 -->
        <profile>
            <id>dev</id>
            <properties>
                  <!-- 注:active标签会在config.properties中生效 -->
                <active>dev</active>
            </properties>
            <activation>
                  <!-- 默认dev配置文件生效 即打包时会优先打dev的配置文件 -->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!-- 线上生产环境 -->
        <profile>
            <id>prd</id>
            <properties>
                <active>prd</active>
            </properties>
        </profile>
    </profiles>
  • 执行以下maven命令:
# -P 指定生效的环境配置文件
# 验证打包是否准确可通过反编译查看config.properties文件中的profiles.active的值
mvn clean package -DskipTests -P prd

三、总结

以上就是今天大狮兄和大家分享的关于Maven命令行命令相关的内容,包含多构建jar包到本地仓库、排除jar包版本依赖、指定子模块打包、多开发环境打包。文章观点或者结论亦或其他如有错误,欢迎大家评论或者私信进行斧正。同时如果此篇文章对大家有所帮助,也欢迎大家点赞、收藏、关注。


IT大湿兄
1 声望0 粉丝