mvn命令:mvn -v 查看maven版本
test 测试
package 打包
clean 删除target
install 安装jar包到本地仓库中
mvn install 安装jar到本地仓库中,这样其他依赖该jar的项目就可以用到了。
mav编译的流程是:编译代码---》发现缺少jar包-----》去pom文件中找依赖的坐标----》去本地仓库找依赖---》如果没有再联网去maven的中央仓库找
archetype插件,用于创建符合maven规定的目录骨架
maven创建目录的两种方式
1.archetype:generate 按照提示进行选择
2.archetype:generate -DgourpId=组织名,公司网址的反写+项目名称
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所在的包名
实例
mvn archetype:generate -DgroupId=com.imooc.maven04 -DartifactId=maven04-demo -Dversion=1.0.0-SNAPSHOT -Dpackage=com.imooc.maven04-demo
项目管理利器(Maven)——maven中的坐标和仓库
1、坐标。
2、构件通过坐标作为其唯一标识。
3、仓库:
-本地仓库。
-远程仓库:maven-model-builder-3.3.3.jar\org\apache\maven\model,超级pom.xml文件,全球中央仓库地址:https://repo.maven.apache.org/maven2
-镜像仓库:/conf/setting文件:
<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>
4、修改本地仓库的位置:<localRepository>D:/Maven/repository</localRepository>
Ps:一旦配置了镜像仓库,那么先前的所有配置都会转到镜像仓库中。
默认仓库位置.m2 repository,将settings.xml复制到更改后的本地仓库中,这样maven版本更新了,也不用修改settings.xml了
在eclipse中安装maven插件以及创建maven项目:
①在eclipse4.0及MyEclipse中就不需要安装maven插件,在window--preference中可以查看是否有maven插件,没有的话就需要安装Maven插件,直接复制Maven插件到eclipse安装目录中的dropins中,然后修改eclipse.ini,在这个文件里的512m后面添加-vm,换行,再添加jdk/bin/javaw.exe保存。
②eclipse是默认运行在jre之上的而maven需要jdk的支持,需要tools.jar在jdk/lib目录中,所以修改eclipse的JRE,java---Installed JREs--ADD--Next--把本地JDK的目录放到JRE home中,并设置Dmaven.multiModuleProjectDirectory=$M2_HOME--最后勾选JDK
③更改maven本地的配置Installactions---ADD---把本地的maven目录放进去
④修改setting的路径
会出现的问题:
1、如果版本不匹配 则mvn -v查看maven的jdk版本,然后在eclipse中配置当前使用的jdk
2、run as-->Maven build...-->在goals中compile(可以在此处使用其他的命令,如:package)---》run
若报-Dmaven.multiModuleProjectDirectory错误,则在选项-->java--》installed JRES 中设置jdk的参数,
添加上“-Dmaven.multiModuleProjectDirectory=$M2_HOME”
pom.xml常用元素
modelVersion 指定了当前pom版本
groupId 反写的公司网址+项目名
artifactId 项目名+模块名
version 版本号 第一个0表示大版本号,第二个0表示大版本号,第三个0表示大版本号 0.0.1snapshot快照
packaging 打包方式 默认是jar
name 项目的描述名
url 项目的地址
description 项目描述
developers 开发人员信息
licenses 许可证信息
dependencies
dependency
scope 依赖范围
optional 设置依赖是否可选
exclusion
dependencyManagement 依赖管理 不会被运行
build
plugins 插件列表(指出坐标)
parent 对父模块的继承
modules 定义多个模块 一起进行编译
1.compile:默认范围,编译测试运行都有效
2.provided:在编译和测试时有效
3.runtime:在测试和运行时有效
4.test:只在测试时有效
5.system:在编译和测试时有效,与本机系统关联,可移植性差
6.import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置
要点1:install指令能把项目打包到本地仓库,运行install指令,同时还运行了package打包。
编译一个项目,如果存在依赖,首先会在本地仓库查找,如果没找到,直接到中央仓库查找,如果还是没找到,则报错。所以编译一个存在本地依赖的项目,本地依赖一定要运行install指令,把依赖的项目打包到本地仓库。
要点2: 如果想排除某个依赖的项目,则需要在pom.xml添加exclusions标签,添加到已经添加了排除依赖的依赖里,把需要排除的依赖的坐标引进来。
依赖冲突
不同版本的构件
1.短路优先
2.先声明先优先
如果路径长度相同,则谁先声明,先解析谁