项目构建工具Maven使用详解及高级用法进阶
如今我们构建一个项目需要用到很多第三方的类库,如写一个使用spring的Web项目就需要引入大量的jar包。一个项目Jar包的数量之多往往让我们瞠目结舌,并且Jar包之间的关系错综复杂,一个Jar包往往又会引用其他Jar包,缺少任何一个Jar包都会导致项目编译失败。
以往开发项目时,程序员往往需要花较多的精力在引用Jar包搭建项目环境上,而这一项工作尤为艰难,少一个Jar包、多一个Jar包往往会报一些让人摸不着头脑的异常。 而Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。
命令
内置变量
- 内置属性分为6种:
- 内置属性:如${basedir}表示项目根目录,${version}表示项目版本
- POM属性:用户可以引用pom文件中对应的值。如:
- ${basedir} 项目根目录
- ${project.build.directory} 构建目录,缺省为target
- ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
- ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
- ${project.packaging} 打包类型,缺省为jar
- ${project.xxx} 当前pom文件的任意节点的内容
- 自定义属性:用户可以在pom的
元素下自定义maven属性。 - setting属性:用户可以使用以settings开头的属性引用settings.xml中xml元素的值,如${settings.localRepository}指向用户本地仓库的地址。
- java系统属性:maven可以使用当前java系统的属性,如${user.home}指向了用户目录。
- 环境变量属性:所有环境变量都可以使用以env.开头的属性。如:${env.JAVA_HOE}。
私服仓库
镜像
代理
公司需要设置代理才能上网,而运行Maven时需要下载依赖的库。怎么办呢?原来Maven也像IE一样,可以设置代理的。
步骤如下:
编辑 ~/.m2/setting.xml 文件。如果该目录下没有该文件,复制 $M2_HOME/conf/setting.xml
找到
1 | <proxy> |
- id:代理的名称(随便设,XYZ也行)
- active:表示该代理是否激活
- protocol:代理协议,这个不用改
- username:当代理需要认证时的用户名
- password:当代理需要认证时的密码
- host:代理的IP地址
- port:代理的端口号
- nonProxyHost:指定不需要使用代理的主机,可不设置。如果有多个,用 | 分隔
如果代理不需要用户认证,username 和 password 两个节点可注释掉)再打开Maven试试,需要下载依赖库时是不是就顺畅了?当然,要确认你的代理是可用的。
多模块
多模块打包
版本号
maven顶级pom和子pom的版本号批量修改
当一个版本发布,新起一个版本时,我们只需要手动修改一下项目中pom.xml的版本号就可以了。但是如果这个maven项目有很多的子模块项目,那么一个个手动的去改就显得费时费力又繁琐了。
还好,maven为我们提供了以下三个命令(需要进入顶级pom所在的目录)来帮助我们解决这个问题。
1、设置新的版本号
mvn versions:set -DnewVersion=1.1.3-RELEASE2、当新版本号设置不正确时可以撤销新版本号的设置
mvn versions:revert3、确认新版本号无误后提交新版本号的设置
mvn versions:commit
命令
1、 mvn install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true 跳过测试,跳过Javadoc编译安装本地
2、 mvn deploy -Dmaven.test.skip=true -Dmaven.javadoc.skip=true 跳过测试,跳过Javadoc发布
插件
依赖排查
Maven开发笔记(二)—— Maven中的可选依赖(Optional Dependencie… - 简书
https://www.jianshu.com/p/3173a0154102
pom详解
1 |
|
配置例子参考
配置发布私服、配置阿里云为镜像、配置代理
1 |
|
资料参考:
- https://blog.csdn.net/u010425776/article/details/52027706
- https://blog.csdn.net/hcmony/article/details/56013655
常见错误
1 | [WARNING] The requested profile "mvn" could not be activated because it does not exist. |
资料
Maven开发笔记(四)—— Maven中plugins和pluginManagement - 简书
https://www.jianshu.com/p/49acf1246eff
maven实战笔记 - 专题 - 简书
https://www.jianshu.com/c/67fa0ed1f27a