Maven知识点梳理和总结

Apache Maven总结

1、Maven的配置:
    首先来说说Maven的配置问题。
    官网:http://maven.apache.org/download.cgi
    或者点击这个链接直接下载:http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.zip
    下载解压到一个本地的纯英文文件夹,然后配置本地环境变量:在path里面添加Maven的bin文件夹目录,选择新建,然后添加,我的是G:\java\IDEA\Maven\apache-maven-3.6.1\bin;【注:此项操作应该基于java的jdk已经配置好的情况之下,如果没有配置好,应先进行jdk配置】如果是使用JAVA_HOME的方式配置的jdk,则需要在JAVA_HOME后面添加Maven的路径,我的是G:\java\IDEA\Maven\apache-maven-3.6.1;前面记得加分号。

Maven知识点梳理和总结_第1张图片

Maven知识点梳理和总结_第2张图片

Maven知识点梳理和总结_第3张图片
    Maven配置成功的标志:在cmd中运行:测试安装成功:mvn -v  如果出现一系列信息,则表示安装成功

2、设置本地仓库:
    修改Maven的配置文件,apache-maven-xxx\conf目录下的settings文件,设置本地的仓库位置
    (可选,默认在C盘的用户目录下)修改localRepository 为:d:/mvn/repo
    【注:注意注释符的位置,将语句直接复制在注释的外面,如果在注释里面,则为无效操作】
    可以测试新建一个Maven项目:进入你设置的文件夹下面,cmd运行:
    mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.chinasofti.build -DartifactId=demo
    一直按回车,运行完成之后就能在文件夹下面发现一个名为demo的文件夹,这个就是新建的。可以在cmd运行:
    mvn clean compile exec:java -Dexec.mainClass="com.chinasofti.build.App"
    清除构建
3、修改镜位置,极速之选,不选龟速。
    在上面修改好之后,修改mirrors,在标签下加入以下配置,启动阿里云的镜像

  
      alimaven 
      aliyun maven 
      http://maven.aliyun.com/nexus/content/groups/public/ 
      central         
 


4、在eclipse或者myeclipse或idea上面修改maven的基本设置
5知识点总结:,
    Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。其最强大的功能就是能够自动下载项目依赖库。
    从用途来说,它可以是:构建工具;依赖管理工具;项目信息聚合工具。
    
    5.1生命周期:

    初始化--编译--测试--打包--验证--安装--部署
    Maven 强大的原因是有一个十分完善的生命周期,生命周期可以理解为对构建(build)过程进行抽象和定义的过程,它定义了各个构建环节的执行顺序,有了这个顺序,Maven 就可以自动化的执行构建命令。生命周期(lifecycle)由多个阶段(phase)组成,每个阶段(phase)会挂接一到多个goal。goal是maven里定义任务的最小单元,相当于ant里的target。可以理解maven为一个插件的容器,每个插件绑定到某个goal执行。根据定义的总结,可以分为三个周期:
    a、Clean Lifecycle:在进行真正的构建之前进行一些清理工作
    b、Default Lifecycle:构建的核心部分,编译、测试、打包、安装、部署等等。
    c、Site Lifecycle:生成项目报告,站点,发布站点。
    其中值得注意的是,在maven中,只要在同一个生命周期,你执行后面的阶段,那么前面的阶段也会被执行,而且不需要额外去输入前面的阶段。讲到这里,我们就要说说Maven的一些基本命令行了。
    
    5.2常用的一些命令:
    编译compile:编译项目的代码
    打包package:获取编译后的代码,并且把它们打成可派发的格式,比如JAR.
    测试test:使用合适的单元测试框架测试源码。这些测试代码并不要求打包或者部署
    安装instal:安装包到本地的repository中,以便其他项目可以依赖这个项目。
    部署deploy:在构建的结束阶段,把最终包上传到远端的repository中,以便其他的项目和开发者可以使用。
    检测validate:验证项目是否正确,并且所有必要的信息是否有效
    清理clean:清理maven项目
    
    5.3依赖机制
    5.31
    依赖管理指的就是Maven来管理项目中使用到的jar包,Maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”,Maven可以通过免费的远程仓库进行下载jar包,我们需要在Pom.xml文件进行配置即可,就是对应版本的坐标。
  

                                     --依赖声明
    net.sf.json-lib                --包名(一般为域名的反写)。
    json-lib                --项目名
    2.4                            --版本名
    jar                                --依赖的类型,jar或者war(默认为jar,表示依赖的是一个jar包)
    jdk15                    --通常是用于从同一POM构建的拥有不同内容的构件,可选属性,可以是任意的字符串
    


    【注:另外当type表示为pom.lastUpdated 这种属性时,表示只将jar的描述信息加载了进来,实际的jar包并未导入。】
    5.32依赖的范围:
    a、compile:编译时依赖在所有阶段都可获得,这是默认值。
    b、provided: 提供的依赖范围用来编译应用程序,但无需部署。若你用到jdk或者应用服务器提供的JAR,则使用此范围,servlet APIs就属于这个依赖范围。测试时,此依赖范围也加入到classpath。
    c、runtime:运行依赖范围在编译阶段是不需要的,只有在运行时需要,比如JDBC驱动程序。
    d、test:测试范围依赖,仅在编译和运行单元测试时需要(比如Junit)。
    e、system 本地依赖,不建议使用。(nexus)
    5.33依赖的传递:
    Only compile and runtime scopes are transitive
    A->B->C
    简单传递依赖:A->C
    A->B-C(0.1)
    A->C(0.2)
    最短路径优先原则: A->C(0.2)
    A->B->C(0.1)
    A->E->C(0.2)
    第一声明优先原则:最终依赖C(0.1)
    5.34依赖归类:
  

                                 --定义版本属性
    2.5
 
 
    
       org.springframework
       spring-core
       ${spring.version}    --引入归类版本属性
    
 


     5.35依赖排除
    

 
       org.hibernate
       hibernate-validator
       4.3.1.Final
       
            
                slf4j-api
                org.slf4j
            
       
 


    5.36继承关系:
    父maven项目中通过dependenciesManagement中定义公共依赖项
    子maven项目中通过dependencies中定义公共依赖项插件/properties都可以继承
    5.37仓库(repository):
    优先级排列:local -> private-> central
    local:localRepository in settings.xml
    private:mirrors in settings.xml
    central: Public Repositories in nexus
6、其余略..................


 

你可能感兴趣的:(java问题,Maven,java,Apache,Maven)