Maven的学习

Maven是什么

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。

以上是官方的理解,下面简单说说我的理解:从我使用的角度而言,maven就是方便jar包导入的工具,有了它就不用自己到处找jar包导入了

它是一种
- 构建工具
- 依赖管理工具
- 项目信息聚合工具

Maven的下载与安装

  • 官网下载安装(地址),选择bin.zip的版本
  • 解压到安装目录
  • path中加入maven安装目录下的bin目录路径
    在这里插入图片描述
    在这里插入图片描述
  • 测试安装成功:cmd中执行mvn -v
    在这里插入图片描述
  • 修改配置文件,apache-maven-xxx\conf目录下的settings文件(由于setting中的资源获取链接全球只有一个,在国外,而中国对外网限制,所以下载速度会特别慢,所以这里我改成阿里云的镜像http://maven.aliyun.com/nexus/content/groups/public/
    在这里插入图片描述
    这里自定义你的资源仓库,也就是你所以获取的jar包的存放地址,没有自行添加
    在这里插入图片描述
  • Eclipse配置
    在这里插入图片描述

Maven的基本概念

Maven(翻译为"专家",“内行”)是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

1.项目构建

项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。
在这里插入图片描述

2.生命周期

在这里插入图片描述

  • mvn compile
  • 执行phase:validate–>generate sources –>process resource –> compile
  • default clean site 3大独立的lifecycle
  • mvn clean compile

3.依赖管理

依赖指的是jar包之间的相互依赖,比如我们搭建一个Struts2的开发框架时,光光有struts2-core-2.3.16.3.jar这个jar包是不行的,struts2-core-2.3.16.3.jar还依赖其它的jar包,依赖管理指的就是使用Maven来管理项目中使用到的jar包,Maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”。
坐标

     <dependency>
    	<groupId>net.sf.json-lib</groupId>
    	<artifactId>json-lib</artifactId>
    	<version>2.4</version>
    	<type>jar</type>
    	<classifier>jdk15</classifier>
    </dependency>

坐标-依赖范围

  • compile:编译时依赖在所有阶段都可获得,这是默认值。
  • provided: 提供的依赖范围用来编译应用程序,但无需部署。若你用到jdk或者应用服务器提供的 JAR,则使用此范围,servlet APIs就属于这个依赖范围。测试时,此依赖范围也加入到classpath。
  • runtime:运行依赖范围在编译阶段是不需要的,只有在运行时需要,比如JDBC驱动程序。
  • test:测试范围依赖,仅在编译和运行单元测试时需要(比如Junit)。
  • system 本地依赖,不建议使用。(nexus)

依赖传递

  • 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)
依赖归类

    <properties>
        <spring.version>2.5</spring.version>//指定版本号
      </properties>
      <dependencies>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>//依赖指定版本号
          </dependency>
       </dependencies>

依赖排除

 <dependency>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate-validator</artifactId>
       <version>4.3.1.Final</version>
       <exclusions>//此下内容依赖排除
            <exclusion>
                <artifactId>slf4j-api</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
       </exclusions>
</dependency>

4.继承

  • 父maven项目中通过dependenciesManagement中定义公共依赖项
  • 子maven项目中通过dependencies中定义公共依赖项
  • 插件/properties都可以继承

使用Maven的好处

Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码就必须放到哪个 目录下,这些目录都有明确的约定。
 Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程
 只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情
使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

Maven的常用命令

  • alias mvni=‘mvn -T 1C clean install -Dmaven.test.skip=true’
  • alias mvnp=‘mvn -T 1C clean package -Dmaven.test.skip=true’
  • alias mvnv=‘mvn versions:set -DgenerateBackupPoms=false’
  • alias mvnd=‘mvn -T 1C clean deploy -Dmaven.test.skip=true’
  • alias mvndd=‘mvn -T 1C clean deploy -P dev -Dmaven.test.skip=true’
  • alias mvndo=‘mvn -T 1C clean deploy -P online -Dmaven.test.skip=true’
  • alias mvnc=‘mvn -T 1C clean eclipse:clean idea:clean’

其他主题

  • IDE:IDEA/STS
  • Gradle?
  • Archetype
  • mvn -e
  • mvn exec:java -Dexec.mainClass=“com.foo.Main"
  • mvn dependency:tree
  • Site
  • Report
  • SCM

Resources

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值