###一、下载并安装
###二、配置环境变量
MAVEN_HOME/bin
查看版本信息:`mvn -version`
进入项目根目录,输入 `mvn compile` 进行编译,如果出现build success,则编译成功。
输入 `mvn test` 测试
输入 `mvn package` 进行打包
###三、常见的构建命令
```
mvn -v 查看版本
compile 编译
test 测试
package 打包
clean 删除target
install 安装jar包到本地仓库中
mvn clean compile 再次编译
```
```
#自动建立目录架构
#mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名 -DartifactId=项目名-模块名 -Dversion=版本号 -Dpackage=包名
#方式一 --> 按照提示进行选择
mvn archetype:generate
Define value for property 'groupId': : com.lgd.maven.maventest
Define value for property 'artifactId': : maventest
Define value for property 'version': 1.0-SNAPSHOT: : 1.0.0SNAPSHOT
Define value for property 'package': com.lgd.maven.maventest: : com.lgd.maven.demo
Confirm properties configuration:
groupId: com.lgd.maven.maventest
artifactId: maventest
version: 1.0.0SNAPSHOT
package: com.lgd.maven.demo
Y: : y
#方式二 --> 一次性写完
mvn archetype:generate -DgroupId=com.lgd.maven.maventest -DartifactId=maventest
-Dversion=1.0.0SNAPSHOT -Dpackage=com.lgd.maven.demo
```
```
#坐标
构件
#仓库
本地仓库和远程仓库
#镜像仓库-->一旦配置了镜像仓库,所有针对原仓库的访问都会转到镜像仓库,原仓库将不能再直接访问。
${MAVEN_HOME}/conf/settings.xml文件下
maven.oschina.net
central
central mirror in oschina
http://maven.oschina.net/content/groups/public/
# 更改本地仓库的位置
${MAVEN_HOME}/conf/settings.xml文件下
D:/path/to/local/repo
将settings.xml文件放在D:/path/to/local/repo路径下,这样我们更新版本的时候,就可以不用再更改settings.xml文件。
# 设置默认的JDK版本
${MAVEN_HOME}/conf/settings.xml文件下
jdk-1.7
true
1.7
1.7
1.7
1.7
```
###四、Maven的生命周期与插件
完整的项目构建过程包括:清理,编译,测试,打包,集成测试,验证,部署。
####Maven生命周期
clean 清理项目
---> pre-clean 执行清理前的工作
---> clean 清理上一次构建生成的所有文件
---> post-clean 执行清理后的工作
default 构建项目(最核心)
---> compile test package install
site 生成项目站点
---> pre-site 在生成项目站点前要完成的工作
---> site 生成项目的站点文档
---> post-site 在生成项目站点后要完成的工作
---> site-deploy 发布生成的站点到服务器上
###五、pom.xml文件解析
```
4.0.0
com.lgd.frames
java-frames
1.0.0-SNAPSHOT
pom
```
依赖范围
```
junit
junit
4.8.2
test
```
Maven为我们提供了3种classpath范围
编译、测试、运行
上述表名junit只存在于测试的classpath范围中
scope有6种值: compile,provided,runtime,test,system,import
compile 默认的范围,编译测试运行都有效。
provided 编译和测试时有效
runtime 在测试和运行时有效
test 测试范围有效
system 编译和测试有效,与本机系统相关联,可移植性差
import 导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入denpendency的配置
依赖传递
比如:A依赖于B,B依赖于C,所以A间接依赖于C
如果不想让A依赖于C
```
com.demo
B
1.0.0-SNAPSHOT
com.demo
C
1.0.0-SNAPSHOT
```
依赖冲突-->可能存在不同版本的冲突
解决冲突的两个原则
1、短路优先
2、先声明先优先
如果路径长度相同,则谁先声明,先解析谁。
聚合和继承
```
pom
MybatisProject
SpringProject
EncryptionAndDecryption
MavenProject
SSMUnion
CollectionProject
JavaPage
MavenInstallProject
```
将多个模块聚合在一起。
```
com.lgd.parent
java-parent
pom
1.0-SNAPSHOT
junit
junit
4.8.2
test
```
```
com.lgd.parent
java-parent
1.0-SNAPSHOT
junit
junit
```