Maven项目管理概念总结

Maven

Maven概念

一款自动化构建工具,专注服务于Java平台的项目构建和jar包依赖管理。maven并不是一个框架,但是他其中一个功能是帮助开发者管理框架所需要的jar包使用Maven后每个jar包本身只在本地仓库中保存一份,需要jar包的工程只需要以坐标的方式简单的引用一下就可以了。不仅极大的节约了存储空间,让项目更轻巧,更避免了重复文件太多而造成的混乱。

jar包之间的依赖关系

jar包往往不是孤立存在的,很多jar包都需要在其他jar包的支持下才能够正常工作,我们称之为jar包之间的依赖关系。最典型的例子是:commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar,如果没有IO包,FileUpload包就不能正常工作。而引入Maven后,Maven就可以替我们自动的将当前jar包所依赖的其他所有jar包全部导入进来,无需人工参与,节约了我们大量的时间和精力。

Maven的安装

    ①检查JAVA_HOME环境变量
        C:\Windows\System32>echo %JAVA_HOME%
        D:\DevInstall\jdk1.7.0_07
    ②解压Maven的核心程序
        将apache-maven-3.2.2-bin.zip解压到一个非中文无空格的目录下。例如:D:\DevInstall\apache-maven-3.2.2
    ③配置环境变量
        M2_HOME  :  D:\DevInstall\apache-maven-3.2.2
        path    :  .....;D:\DevInstall\apache-maven-3.2.2\bin
    ④查看Maven版本信息验证安装是否正确
        命令行中输入命令:mvn -v

Maven

Project Object Model:项目对象模型。将Java工程的相关信息封装为对象作为便于操作和管理的模型。Maven工程的核心配置。可以说学习Maven就是学习pom.xml文件中的配置.pom.xml文件存在于项目的根节点下。

Maven项目管理概念总结_第1张图片

依赖

依赖范围

依赖的范围有几个可选值,我们用得到的是:compile、test、provided三个。

compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包;

test:测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试classpath,而在编译和运行项目时无法使用此类依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;

provided:此依赖范围,对于编译和测试classpath有效,而对运行(指的并不java项目运行,而是java web项目运行在服务器的时候)时无效;(tomcat的lib文件中的jar包就是web项目的运行环境)

  compile test provided
主程序 ×
测试程序
参与部署,运行阶段 × ×

依赖的传递性

A依赖B,B依赖C,A能否使用C呢?那要看B依赖C的范围是不是compile,如果是则可用,否则不可用。

Maven工程 C依赖范围 对A的可见性
A > B > C compile
A > B > C test ×
A > B > C provided ×

依赖的排除

如果我们在当前工程中引入了一个依赖是A,而A又依赖了B,那么Maven会自动将A依赖的B引入当前工程,但是个别情况下B有可能是一个不稳定版,或对当前工程有不良影响。这时我们可以在引入A的时候将B排除。在dependency中添加以下节点

Maven项目管理概念总结_第2张图片


              
     commons-logging              
     commons-logging   
     

统一管理所依赖jar包的版本

我们可以将jar包的版本信息统一提取出来,以便对于那些版本号相同的坐标统一修改。
实现步骤:在pom.xml中
1统一声明版本号

     4.1.1.RELEASE//自定义标签名

2引用前面声明的版本号

          org.springframework
          spring-core
          ${my.version}
     

依赖的原则

1.最短路径优先

2.路径相同时先声明者优先

你可能感兴趣的:(maven,依赖,jar,项目)