Maven常用的构建命令
Maven基础知识
Maven常用命令
mvn -v 查看Maven版本
compile 编译
test 测试
package 打包
clean 删除target ----> target存放的是项目 编译的字节码文件和测试报告
install 安装Jar包到本地仓库中
Maven自动建立目录骨架
archetype插件 ---> 用于创建符合maven规定的目录骨架
创建目录的两种方式:
1.mvn archetype:generate 按照提示进行选择
2.mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
Maven中的坐标和仓库
坐标
构件:构件通过坐标作为其唯一标识
仓库
本地仓库和远程仓库
镜像仓库
镜像仓库的位置修改:打开Maven--->conf--->settings.xml
找到<mirrors>这个标签
具体修改如下:
<mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
</mirror>
更改仓库位置:
默认存放在当前用户目录中的--->.m2--->repository
修改默认路径:新建一个仓库文件夹、找到settings ---> 找到<localRepository>
新增<localRepository>新建文件夹路径</localRepository>--->复制settings到新的文件夹中
在Eclipse中安装Maven插件以及创建Maven项目
复制Maven插件 ---> 放到Eclipse的安装目录dropins中--->重启
Eclipse.ini文件中加入 --->-vm和jDK中的javaw.exe路径
Maven的生命周期和插件
完整的项目构建过程包括:
清理、编译、测试、打包、集成测试、验证、部署
Maven的生命周期:
clean 清理项目
pre-clean 执行清理前的工作
clean 清理上一次构建生成的所有文件
post-clean 执行清理后的文件
default 构建项目(最核心)
site 生成项目站点
pro-site 在生成项目站点前要完成的工作
site 生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上
Pom.xml解析
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 指定了当前pom的版本 -->
<modelVersion>4.0.0</modelVersion>
<groupId>反写的公司网址+项目名</groupId>
<artifactId>项目名+模块名</artifactId>
<!--
第一个0表示大版本号
第二个0表示分支版本号
第三个0表示小版本号
0.0.1
snapshot 快照
alpha 内部测试
beta 公测
Release 稳定
GA 正式发布
-->
<version></version>
<!-- 打包 默认是Jar 还有其它如:war、zip、pom -->
<packaging></packaging>
<!-- 项目描述名 -->
<name></name>
<!-- 项目地址 -->
<url></url>
<!-- 项目描述信息 -->
<description></description>
<!-- 开发人员信息 -->
<developers></developers>
<!-- 许可证信息 -->
<licenses></licenses>
<!-- 组织信息 -->
<organization></organization>
<!-- 依赖列表可以包含多个依赖项 -->
<dependenices>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<scope></scope> -----> 依赖范围
<optional></optional> ---->设置依赖是否可选
<!-- 排除依赖传递列表 -->
<exclusions>
<exclusion>
</exclusion>
</exclusions>
</dependency>
</dependenices>
<!-- 依赖管理 -->
<dependencyManagement>
<dependenices>
<dependency></dependency> --->一般不会被引用
</dependenices>
</dependencyManagement>
<build>
<!-- 插件列表 -->
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
<!-- 通常用于在子模块中对父模块POM的继承 -->
<parent></parent>
<!-- 用来聚合运行的Maven项 -->
<modules>
<module></module>
</modules>
<project>
Maven依赖范围
也就是:<scope></scope>的依赖范围。
依赖范围有6种:
compile --> 默认的范围,编译、测试、运行都有效
provided --> 在编译和测试时有效
runtime --> 在测试和运行时有效
test --> 只在测试时有效
system --> 同provided一样,与本机系统关联,可移植性差(不可移植)
import --> 只在<dependencyManagement>中有效
Maven依赖传递
假如有Maven项目A,项目B依赖A,项目C依赖B。那么我们可以说 C依赖A。
也就是说,依赖的关系为:C—>B—>A。
那么我们执行项目C时,会自动把B、A都下载导入到C项目的jar包文件夹中。
Maven依赖冲突
依赖原则:
1.短路优先 --> 优先解析路径短的版本
如:A->B->C->X(jar)
A->D->X(jar) ---->这个优先依赖
2.先声明先优先 --> 如果路径长度相同,则谁先声明,先解析谁