Maven基础知识整理

Maven是一个管理工程的工具,它实现了项目构建,Jar包的管理,工程之间依赖的管理以及自动打包

apache的一个开源项目,他是使用java编写的,他也只可以管理java项目

Maven可以实现让项目与依赖的jar包实现分离,他会把jar包保存在本地仓库(就是放JAR的地方),当使用的时候,通过坐标来获取(jar包管理),第一次接触可能会问,把需要的jar包拷贝到lib目录下跟放在本地仓库有什么不一样吗,这也很好说明,如果使用传统方式,当你开发完一个项目,再开发另一个项目,他们所需要相同jar包的时候,你又得再拷贝一份,虽然不是特别麻烦,但项目构建多了对硬盘内存也是一种浪费,但使用maven就可以完全避免这个问题

项目一键构建:当拿到一个Maven项目的源码时,只需要一个命令tomcat:run(要切换到项目所在位置)就能把项目运行起来(甚至可以没有tomcat,因为maven中内置了tomcat插件),它可以完成了编译,测试(junit),运行,打包,部署

Maven也十分适合互联网项目(按业务分层)

当使用Maven的一些功能的时候,他是需要联网来下载一些所需要的插件,如果没有网的话,就可拿到一个本地仓库,并在settings.xml中配置这个标签,指到你的本地仓库,也可以把本地仓库放到他默认的地址

当你要使用的JAR包,在你本地仓库没有的时候,这里就涉及到了Maven中三个仓库的概念,有本地仓库,远程仓库,中央仓库,当你本地仓库没有的时候,如果你的开发环境有远程仓库去拿(就是你们公司搭建的私服),有了就缓存到你的本地仓库,如果远程仓库也没有,远程仓库就去中央仓库拿,然后缓存到远程仓库,再缓存到本地仓库,就是这个概念,如果没有远程仓库(自己开发),就直接去中央仓库拿

Maven的常用命令:

     1.clean:清理编译后的target

     2.tomcat:run:一键启动

     3.compile:编译(不包括测试的源码,就是test下的代码)

     4.test:编译(编译test下的源码,并运行,不包括main中的)(也执行了3)

     5.package:打包

     6.install:把项目发布到本地仓库(也就执行了3,4,5命令)

     7.deploy:发布到私服

创建Maven项目:

     1.Group Id:组织名称

     2.Artifact Id:模块名称

     3.Version:版本

     上面三个也会最为JAR包

pom.xml文件配置:

     build标签里可以指定jdk版本,以及编码

     dependencies标签可以配置依赖JAR包

依赖范围:

     compile:都要

     provieded:编译,测试需要,运行,打包不需要

     runtime:编译不需要,测试,运行,打包需要

     test:编译不需要,测试时需要,运行时不需要

添加依赖,查询jar包的坐标推荐http://mvnrepository.com/这个网址

有个例子,当你使用maven导入struts-spring的JAR包,然后导入spring-context的JAR包后,他们都依赖了spring-beans包,但是他们spring-bean包的版本不一样,这时就会遵循优先声明原则,假如是struts-spring先声明的就使用struts-spring依赖的spring-bean版本,如果先声明的spring-context,那就使用spring-context依赖的spring-bean。。。还有另一种手段,就是自己导入所需要的spring-beans版本(路径近优先原则),还可以使用exclusions标签,在导入JAR包时排除一些依赖

你可能感兴趣的:(maven)