Maven 参考手册
时间:2019/6/27 22:42:19
参考:
- 《Mavan 实战》-- 徐晓斌
Maven 参考手册#
jar
搜索网站:
Tips#
- 当 Maven 加载的依赖存在问题时,可以手动删除本地仓库里的缓存。
常用命令#
- 帮助:
mvn -h
- 版本:
mvn -v
- 系统属性:
mvn help:system
- 清理:
mvn clean
- 编译:
mvn compile
- 执行测试:
mvn test
- 打包:
mvn package
- 强制更新:
mvn clean install -U
- 查看依赖:
mvn dependency:[list][tree][analyze]
- 跳过执行测试:
mvn install -Dmaven.test.skip=true
- 发布到远程仓库
mvn deploy
- 构建站定:
mvn site
- 多生命周期(每个生命周期只可以指定一个命令):
mvn clean deploy site-deploy
setting.xml
配置文件#
Maven 安装目录下的是全局配置,~/.m2
目录下的是用户配置。
坐标#
Maven 使用坐标表示 jar
包的位置,使用坐标在仓库中查找对应的依赖。
groupId
: 项目,比如:com.xiaotian.note
artifactid
:模块,比如note-server
note-core
等。version
: 版本号,比如1.1.0-SNAPSHOT
1.1.0-RELEASE
等。packaging
:打包方式, 比如war
pom
jar
等。默认jar
。classifier
:由插件帮助生成。
项目命名规范:
- groupId:
com.xiaotian.部门.项目
- artifactid:
项目名-模块
- version:
主版本.阶段性版本.次要变更
版本#
快照版本:snapshot
每次的时候会从仓库里找最新的版本。
发布版本:release
构建的时候不会自动拉取最新的版本。
生命周期#
执行指定命令,会执行生命周位于该命令之前的所有命令。
- clean:清理项目
- pre-clean:清理前需要完成的工作
- clean:清理上一次构建生成的文件
- post-clean :清理后需要完成的工作
- default:构建项目
- validate
- initialize
- generate-sources
- process-sources:处理项目资源文件,一般来说是对
src/main/resources
里面的资源进行变量替换,然后输出到classpath目录中。 - generate-resources
- process-resources
- compile:编译项目源代码,把
src/main/java
里的代码编译至 classpath - process-classes
- generate-test-sources
- process-test-sources 处理项目测试资源
- generate-test-resources
- process-test-resources
- test-compile 编译项目测试代码
- process-test-classes
- test 执行单元测试
- prepare-package
- package 打包成可发布的格式,如 jar
- pre-integration-test
- integtration-test 集成测试
- post-integration-test
- verify
- install 安装到本地仓库
- deploy 推送到远程仓库
- site:建立和发布项目站点
- pre-site 之前的准备工作
- site 生成项目站点文档
- post-site 之后需要完成的工作
- site-deploy 将项目生成的站点发布到服务器上
依赖#
快照版本和稳定版本,Maven 会从仓库中查找快照版本的最新版本。开发测试时可以指定打包的版本为快照版本,加上后缀即可。
依赖解析机制:
- 依赖范围是
system
时,直接从本地文件系统解析。 - 从本地仓库查找,没有下一步。
- 从所有远程仓库查找。
- 如果依赖的版本是
RELEASE
或LATEST
则读取所有远程仓库的 jar 包元信息(maven-metadata.xml),计算出实际的值,然后根据实际值进行2
3
步操作。 - 如果依赖的是快照版本,则遍历所有仓库,读取源信息,查出最新的版本,然后进行
2
3
步操作。 - 如果得到的构建版本是时间戳格式的快照,则复制时间戳格式文件到对应的快照版本。
依赖元素配置:
groupId
: 项目,比如:com.xiaotian.note
artifactid
:模块,比如note-server
note-core
等。version
: 版本号,比如1.1.0-SNAPSHOT
1.1.0-RELEASE
等。type
:依赖的类型,对应坐标的packaging
。scope
:依赖范围:Maven有三种classpath
,分别是 编译、测试和运行时。test
:测试有效。provider
:编译和测试有效。runtime
:测试和运行有效。compile
:编译、测试和运行时有效。默认配置。system
:慎用。import
:
optional
:标记依赖是否可选。execlusions
:排除依赖
。
中央仓库、本地仓库、私服#
推荐:本地仓库 -> 私服 -> 远程仓库的架构。
中央仓库:是存储 jar
包的公共仓库,可以通过网络访问。
私服: 位于中央仓库和本地仓库之间,用于代理中央仓库,仓库中不存在的 jar
包会中央仓库下载。
本地仓库: jar 包在电脑上的缓存仓库。
远程仓库配置:
<profile>
<id>good_repository</id>
<!-- jar包仓库-->
<repositories>
<repository>
<id>taobao</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
<repository>
<id>mvnrepository</id>
<url>http://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
<!--插件仓库-->
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
</profile>
# 默认jdk版本
<profile>
<id>jdk-1.8</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>
发布到远程仓库
1 2 3 4 5 6 7 8 9 10 |
|
仓库密码#
和指定仓库的ID对应即可。
1 2 3 4 5 6 7 8 9 10 |
|
镜像仓库 中央仓库的完全复制#
mirrorOf
指定对哪个仓库的访问会从当前镜像仓库中拉取数据。支持 *
所有,external:*
所有,除了本地访问(地址中包含localhost),id1,id2
指定id *,!id1
排除指定Id。
1 2 3 4 5 6 |
|
模块管理#
定义一个Mavan项目作为聚合项目,负责统一管理子模块的生命周期管理。在聚合模块执行命令相当于对所有的子模块执行命令。类似于批量管理,多用于不同模块内容经常一起变更的情况,此时可以对变更的模块进行统一执行测试,构建,打包,发布等生命周期。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
父模块#
父模块,子模块会继承父模块的依赖和配置。通常会在公司内部定义统一的父模块(pom)进行jar包版本统一管理,其他项目的继承该pom,maven默认会从上级目录找父pom,如果没父pom和当前项目在同一级目录,需要指定父pom的路径 <relativePath>../../spring-boot-dependencies</relativePath>
。
1 2 3 4 5 6 7 8 |
|
插件#
mvn 默认配置生命周期的全部插件版本,需要的时候只需指定引入插件的名字即可。如 生成源码、生成配置文件、编译组件等。
使用命令安装jar包到本地仓库#
命令:
1 |
|
安装dubbo:
1 |
|