Maven简单介绍
maven命令
- mvn -v:查看maven版本
- mvn compile: 编译
- mvn test:测试
- mvn package:打包
- mvn clean:删除target
- mvn install: 安装jar包到本地仓库
pom.xml
坐标
在maven的世界中任何的依赖,插件都可以称为构件,任何构件都以坐标做为唯一标识
Maven便给我们制定了一套规则那就是使用坐标进行唯一标识。Maven的坐标元素包括groupId、artifactId、version、packaging、classfier。只要我们提供正确的坐标元素,Maven就能找到对应的构件,首先去你的本地仓库查找,没有的话再去远程仓库下载。如果没有配置远程仓库,会默认从中央仓库地址(http://repo1.maven.org/maven2)下载构件,该中央仓库包含了世界上大部分流行的开源项目构件,但不一定所有构件都有,我在以前的开发中就遇到过找不到oracle数据库jar包的问题,不知道现在是否依然如此。
- groupId:包名
- artifactId:模块名
- version:版本
仓库
仓库管理依赖
- 本地仓库
- 中央仓库
- denpendetcies:在pom.xml导入依赖
镜像仓库:
在config目录中找到setting配置文件,找到该位置进行修改(约156行) <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>
更改本地仓库的位置:
在config目录中找到setting配置文件,找到该位置进行修改(约55行)
<localRepository>E:\mvnRepository</localRepository>
自动创建目录骨架
创建目录的两种方式:
1. mvn archetype:generat
2. mvn archetype:generat -DgroupId=组织名,公司网址的反写+项目名
-DartfactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
Maven生命周期
- clean: 清理项目
- default:构建项目(compile test package install)
- site:生成项目的站点
pre-site:生成站点前要完成的工作
site:生成项目的在站点文档
post-site:在生成项目站点后要完成的工作
site-deploy:发布生成的站点到服务器上
Pom.xml解析
modelVersion :指定当前的版本
groupId:指定所属的项目
artfactId:项目名加模块名,是实际项目下的一个模块。
version:版本号
packaging:打包方式,不指定的话默认为jar
name:项目描述名
url:项目地址
description:项目描述
developers:项目许可证
lecenses:
organization:组织信息
dependencies:依赖
denpendency:依赖项
scope:依赖范围
optional:设置依赖是否可选
exclusions:排除依赖传递列表
exclusion+坐标
dependencyManagement:依赖管理,里面可以有依赖列表。
build:其中可以有插件列表plugin
parent:子模块对父模块的继承
modules:指定多个模块,可以一起进行编译。
依赖的范围scope
compile:默认的级别。编译、测试、运行都有效。
provided:在编译和测试时有效。
runtime:在测试、运行时有效
test:在测试时有效
system:在编译和测试时有效,与本机系统相关联,可以移植性差。
import:导入的范围,它只使用在dependencyManagement中,表示从其它的pom中导入denpendecy的配置。
## 依赖冲突 ##
1.短路优先:
A->B->C->X(jar)
A->D->X(jar)优先解析
2.先声明先优先: