基本命令
mvn -v 版本
compile 编译
test 测试
package 打包项目
clean 删除target
install 安装jar包到本地仓库
创建目录的两种方式
- archetype:generate 按照提示进行选择
- archetype:generate 自动生成目录
-DgroupId=组织名,公司网址的反写
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
maven坐标和仓库
- maven坐标是指<groupId…/>、<artifactId…/>、<version…/>能够作为项目的唯一标志,所以他们在一起组成了maven的坐标。
- 仓库:本地仓库–远程代理仓库–远程中央仓库
国内镜像仓库:
CN
OSChina Central
http://maven.oschina.net/content/groups/public/
central
更改仓库的默认路径
在conf/settings.xml 中修改 D:/Maven/repository
elipse中安装maven
maven的生命周期
clean 清理项目
default 构建项目
site 生成项目站点
pom.xml文件
详细解析请看pom.xml中的注释
maven的依赖范围
junit junit 4.10 test scope值指定的范围: scope = compile 编译 测试 运行 provided 编译 测试 ---- runtime ---- 测试 运行 test ---- 测试 ---- system 编译 测试 ---- 与本机相关联,不可移植性 import 导入范围,它只使用在dependencyManagement中,表示从其他pom中导入dependency的配置maven依赖传递
项目B依赖项目A, 项目C依赖项目B --> 则默认项目C依赖B和A, 为了排除C对A的依赖可以配置exclusions列表
maven冲突
A.jar依赖X.jar, 同时B.jar也依赖X.jar, 这就造成了冲突
短路优先原则:A.jar -> B.jar -> C.jar -> X.jar
A.jar -> B.jar -> X.jar 优先
先声明原则: 路径相同时, 谁先声明谁优先
maven的聚合和继承
聚合:将多个模块打包成一个
继承:将各个模块公共部分定义成父模块,简化配置
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<!--1. 当前pom版本-->
<modelVersion>4.0.0</modelVersion>
<!--2. maven坐标-->
<groupId>反写公司名字+项目名</groupId>
<artifactId>项目名+模块名</artifactId>
<!--
0.0.1-SNAPSHOT
第一个0表示大版本号
第二个0表示分支版本号
第三个0表示小版本号
snapshot 快照
alpha 内部测试
beta 公测
Release 稳定
GA 正式发布
-->
<version>版本号-版本</version>
<packaging></packaging> <!-- 打包:默认是jar包,也可以打包成war zip pom-->
<name></name> <!-- 项目描述名 -->
<url></url> <!-- 项目地址 -->
<description></description> <!-- 项目描述 -->
<developers></developers> <!-- 开发者 -->
<licenses></licenses> <!-- 许可 -->
<organization></organization> <!-- 组织 -->
<dependencies>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<scope></scope>
<!-- 设置依赖是否可选 -->
<optional></optional>
<!-- 排除依赖传递列表 -->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 依赖管理 -->
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
<!-- 插件列表 -->
<build>
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
<!-- 指定父模块 -->
<parent></parent>
<!-- 聚合运行多个maven项目 -->
<modules>
<module></module>
</modules>
</project>