参考文章
maven(一) maven到底是个啥玩意~
maven是基于项目对象模型(POM, project object model),可以通过一小点描述信息来管理项目的构建,报告和文档的软件项目管理工具。
maven的核心功能是合理叙述项目间的依赖关系。
通过groupId、artifactId、version三个属性就能定位一个jar包。
groupId是一个唯一标识,artifactId是项目名称,version是版本号。
通过pom.xml中的配置,就能够获取到想要的jar包,这些jar包就是从仓库中获得的。
仓库分为:本地仓库、第三方仓库(私服)、中央仓库。
Maven会将工程中依赖的构件(Jar包)从远程下载到本机一个目录下管理,每个电脑默认的仓库是在 $user.home/.m2/repository下。
一般我们会修改本地仓库位置,自己创建一个文件夹,下载的jar包都放到本地仓库中,然后每次写项目,直接从本地仓库里拿就行了。
修改本地库位置:在$MAVEN_HOME/conf/setting.xml文件中修改,添加
第三方仓库,又称为内部中心仓库,也称为私服。
私服:一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。(使用私服为了减少对中央仓库的访问)。
私服可以使用的是局域网,中央仓库必须使用外网。也就是一般公司都会创建这种第三方仓库,保证项目开发时,项目所需用的jar都从该仓库中拿,每个人的版本就都一样。
注意:连接私服,需要单独配置。如果没有配置私服,默认不使用。
Maven内置了远程公用仓库:http://repo1.maven.org/maven2
这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主。
工程依赖的jar包如果本地仓库没有,如果配置的有私服,则从私服中拉去,如果还是没有则从中央仓库下载。
编译:mvn compile --src/main/java目录java源码编译生成class (target目录下)
测试:mvn test --src/test/java 目录编译
清理:mvn clean --删除target目录,也就是将class文件等删除
打包:mvn package --生成压缩文件:java项目jar包;web项目war包,也是放在target目录下
安装:mvn install --将压缩文件(jar或者war)上传到本地仓库
部署|发布:mvn deploy --将压缩文件上传私服
1、第一原则:路径近者优先原则
A–>B–>C–>D–>X(1.6)
E–>D–>X(2.0)
使用X(2.0),因为其路径更近
2、第二原则:第一声明者优先原则。就是如果路径相同,maven 默认配置在前面的优先使用
A–>B --> X(1.6)
C–>D–> X(2.0)
这样就是路径相同,那么如果A在前面,C在后面,则使用X(1.6)
maven会先根据第一原则进行选择,第一原则不成,则按第二原则处理。