Maven的概念与核心配置

安装步骤:

1、安装jdk

2、从官网中下载对应的版本

3、解压安装,然后配置环境变量,将bin目录添加到path路径下

4、在命令行中输入mvn -v,看到版本信息表示安装成功

3、maven的基本常识

3.1 maven如何获取jar包

maven通过坐标的方式来获取 jar包,坐标组成为:公司/组织(groupId)+项目名(artifactId)+版本(version)-- GAV 组成,可以从互联网,本地等多种仓库源获取jar包

3.2 maven仓库的分类
3.2.1本地仓库

本地仓库就是开发者本地已经下载下来的依赖仓库

本地仓库路径配置在maven对应的conf/settings.xml配置文件。

设置本地仓库:d:\repository

3.2.2中央仓库

中央仓库即maven默认下载的仓库地址,是maven维护的

       所有的 maven 项目都会继承超级pom超级pom文件位置:

        (apache-maven-3.6.3\lib\maven-model-builder-3.6.3.jar包中的 org/apache/maven/model/pom-4.0.0.xml),如图:

注意这里的 central

Maven的概念与核心配置_第1张图片

3.2.3 私有仓库

私有仓库可以理解为自己公司的仓库,也叫Nexus私服

3.3 maven的常用仓库

由于网络访问的原因,在国内如果需要下载国外jar包的时候会受限,因此一般在使用过程中需要修改maven的配置文件,将下载jar包的仓库地址修改为国内的源,常用的是阿里云的mvn仓库,修改配置如下:

maven目录/conf/setting.xml

设置镜像:

其中,mirrorOf的值是 central,表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像,
id 表示镜像的唯一标识符,name 表示镜像的名称,url 表示镜像的地址。

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

Maven的概念与核心配置_第2张图片

4、maven的项目结构

Maven是Apache下的项目管理工具,它由纯Java语言开发,可以帮助我们更方便的管理和构建Java项目。

maven的优点

1、  jar包管理:

a)   从Maven中央仓库获取标准的规范的jar包以及相关依赖的jar包,避免自己下载到错误的jar包;

b)   本地仓库统一管理jar包,使jar包与项目分离,减轻项目体积。

2、  maven是跨平台的可以在window、linux上使用。

3、  清晰的项目结构;

Maven的概念与核心配置_第3张图片

4、  多工程开发,将模块拆分成若干工程,利于团队协作开发。

5、  一键构建项目:使用命令可以对项目进行一键构建。

5、maven 生命周期(命令行和idea)

idea:

Maven的概念与核心配置_第4张图片

clean 删除target目录

compile 编译项目,生成target目录

packet 打包

install 安装

deploy 部署

注意:idea是按照顺序执行下来,如packet就会依次执行clean-validate-compile-test

命令行:

mvn clean  删除target目录

mvn compile 编译项目

mvn package 打包项目 (   mvn clean package -Dmaven.test.skip=true 跳过测试类打包 )

mvn install 安装

maven 核心功能总结:

  1. maven 核心作用是编译、测试、打包。
  2. 根目录下的pom.xml 文件设置分组ID与artifactId。
  3. maven 基于约定的方式从项目中获取源码与资源文件进行编译打包。

对于项目所依懒的组件与会本地仓库比较,如果本地仓库不存在则会从中央仓库下载。

6、依赖管理

6.1、依赖传递

我们的项目通常需要依赖第三方组件,而第三方组件又会依赖其它组件,遇到这种情况Maven会将依赖网络中的所有节点都会依赖进来,这就是Maven的依赖传播特性。


    org.springframework
    spring-webmvc
    5.3.21

Maven的概念与核心配置_第5张图片

项目直接依赖了spring-webmvc 叫直接依赖,而对spring-aop等的 依赖是通过webmvc传递的所以叫间接依赖。

6.2、依赖优先原则

基于依赖传播特性,导致整个依赖网络会很复杂,难免会出现相同组件不同版本的情况。Maven此时会基于依赖优先原则选择其中一个版本。

第一原则:最短路径优先。

第二原则:相同路径下配置在前的优先。

6.2.1 可选依赖

optional是maven依赖jar时的一个选项,表示该依赖是可选的,不会被依赖传递。


            org.springframework
            spring-webmvc
            5.3.21
            true
        

6.2.2 排除依赖

即排除指定的间接依赖。通过配置 配置排除指定组件---可以避免依赖冲突


           org.springframework
           spring-webmvc
           5.3.21
           
               
                   org.springframework
                   spring-aop
               
           
       

6.2.3 依赖范围

像junit 这个组件 我们只有在运行测试用例的时候去要用到,这就没有必要在打包的时候把junit.jar 包过构建进去,可以通过Mave 的依赖范围配置

来达到这种目的。maven 总共支持以下四种依赖范围:

Maven的概念与核心配置_第6张图片

如:compile默认值(不写默认就是compile)

provided:servlet-api写代码需要依赖,要不然编译会报错,但是打包的时候不需要打进去,因为Tomca容器里面包含servlet-api了

runtime:mysql的依赖再编译时可以不依赖,但是运行的时候需要依赖

test:测试包在打包的时候不需要打到war或者jar包里面的,如Junit,运行的时候不需要,放进去会让包变大

system一般不用

7、项目聚合与继承

7.1、聚合

示例项目: micro/userpay

是指将多个模块整合在一起,统一构建,避免一个一个的构建。聚合需要一个父工程,然后使用 进行配置其中对应的子工程的相对路径

注意:父工程一般是不需要src目录的


    common
    user
    order

7.2、继承

继承是指子工程直接继承父工程当中的属性、依赖、插件等配置,避免重复配置。

  1. 属性继承:
  2. 依赖继承:
  3. 插件继承: (很少用)

上面的2个配置子工程都可以进行重写,重写之后以子工程的为准。

7.3、依赖管理---如何在项目中依赖自定义项目

通过继承的特性,子工程是可以间接依赖父工程的依赖,但多个子工程依赖有时并不一致,这时就可以在父工程中加入  声明该工程可能使用的jar包,然后在子工程中引入(不同加版本,如果父工程中没有定义版本,子工程中需要加)。

譬如



    
        
            junit
            junit
            4.12
        
    



    junit
    junit

7.4、项目属性

通过 配置 属性参数,可以简化配置。



    5.2.6.RELEASE
    1.9.5
  



      org.springframework
      spring-webmvc
      ${SPRING.VERSION}
    

你可能感兴趣的:(maven,java)