Maven总结1/3

相关文章
Maven总结2/3-----maven工程拆分与聚合
Maven总结3/3-----私服、第三方jar包的上传和下载

1.Maven 概述

(1)概念

Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM: Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑。
在这里插入图片描述

* 依赖管理

传统工程maven工程
直接把jar包放在在项目中maven通过创建仓库,保存jar包,,项目中只用放置jar包的坐标 然后通过pom.xml配置文件,来配置jar包依赖

pom文件jar包坐标内容:

groupId 公司或组织域名的倒序
artifactId  项目名或模块名 
version   版本号

示例:

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
	  <!--坐标作用域,非必填-->
      <scope>test</scope>
</dependency>
  • 通过读取 pom.xml 文件中的坐标,再到仓库中找到 jar 包,会不会很慢?

通过 pom.xml 文件配置要引入的 jar 包的坐标,再读取坐标并到仓库中加载 jar 包,这样我们就可以直接使用 jar 包了。
为了解决这个过程中速度慢的问题,maven 中也有索引的概念,通过建立索引,可以大大提高加载 jar 包的速度,使得我们认为 jar 包基本跟放在本地的工程文件中再读取出来的速度是一样的。
这个过程就好比我们查阅字典时,为了能够加快查找到内容,书前面的目录就好比是索引,有了这个目录我们就可以方便找到内容了,一样的在 maven 仓库中有了索引我们就可以认为可以快速找到 jar 包。

* 一键构建

什么是构建?
指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建。

什么是一键构建构建?
一键构建指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。

  • maven项目目录下输入:mvn tomcat:run 可以启动项目。

* 仓库的种类

种类作用
本地仓库用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找
远程仓库(私服)如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。例如:公司内部开发所需要的jar包
中央仓库在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件安装完maven之后,本地maven自动连接中央仓库。

在这里插入图片描述

  • 下载jar包:搜索maven中央仓库→搜索要下载的jar包→选择要下载的版本→复制jar包信息。
    在这里插入图片描述

* 仓库之间的关系

类别关系
本地仓库与pom文件当我们启动一个maven工程的时候,maven工程会通过pom文件中的jar包的坐标去本地仓库找对应的jar包(如果是编译阶段,可以直接找本地项目的源码)
本地仓库和中央仓库仓库默认情况下(或公司断网时候),如果本地仓库没有jar包,maven工程会自动(断网时通过局域网连接远程仓库)去中央仓库下载jar包到本地。
本地仓库和远程仓库在公司中,如果本地没有对应的jar包,会先从私服下载jar包,如果私服没有jar包,可以从中央仓库下载,也可以从本地上传。

(2)Maven 的好处

节省磁盘空间,可以一键构建,可以跨平台,应用在大型项目时可以提高开发效率。

一键构建:maven自身集成了tomcat插件,可以对项目进行编译、测试、打包、安装、发布等操作。

maven三套生命周期:清理生命周期、默认生命周期、站点生命周期。

(3)maven安装

①为了使用 Maven 管理工具,我们首先要到官网去下载它的安装软件。
②Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下。
③maven环境变量: %MAVEN_HOME%\bin

  • 通过 mvn -v命令检查 maven 是否安装成功,看到 maven 的版本为 3.5.2 及 java 版本为 1.8 即为安装成功。
  • 电脑上需安装 java 环境,安装 JDK1.7 + 版本。

【解压后的文件夹目录及存放内容】

文件夹目录存放内容
bin存放了 maven 的命令,比如 mvn tomcat:run
boot存放了一些 maven 本身的引导程序,如类加载器等
conf存放了 maven 的一些配置文件,如 setting.xml 文件
lib存放了 maven 本身运行所需的一些 jar 包

3. Maven常用命令和生命周期

(1)常用命令

命令含义
clean构建项目的时候,清理之前构建项目的信息,执行 clean 会删除 target 目录及内容。例如,在公司中维护别人之前写的代码,尤其点电脑配置、项目配置不同,部署项目方式不同,可以先清理。
validate验证项目是否正确,所有必要的信息可用
compile对src/main下的目录进行编译
test使用合适的单元测试框架测试编译的源代码。这些测试不应该要求代码被打包或部署
package本地项目直接打包,打包在本地编译目录—target目录下。对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war包。
verify对集成测试的结果执行任何检查,以确保满足质量标准
install把项目打包(根据pom文件配置,打包成jar/war包)安装到本地仓库
deploy本地做好的项目直接打包上传到私服,与其他开发人员和项目共享

(2)生命周期图

maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”。

生命周期作用
Clean Lifecycle(清理生命周期)在进行真正的构建之前进行一些清理工作。
Default Lifecycle(默认生命周期)构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle(站点生命周期)生成项目报告,站点,发布站点。

在这里插入图片描述

4. maven工程目录结构

(1)目录结构

目录存放内容
src/main/java存放项目的.java 文件
src/main/resources存放项目资源文件,如 spring, hibernate 配置文件
src/test/java存放所有单元测试.java 文件,如 JUnit 测试类
src/test/resources测试资源文件
target项目输出位置,编译后的 class 文件会输出到此目录
pom.xmlmaven 项目核心配置文件

(2)项目运行

①命令行运行:
进入 maven 工程目录(当前目录有 pom.xml 文件),运行 tomcat:run 命令。

②项目中运行
在这里插入图片描述

4. 解决冲突

maven工程要导入jar包的坐标,就必须要考虑解决jar包冲突。

maven导入jar包中的一些概念

概念含义
直接依赖项目中直接导入的jar包,就是在该项目中的直接依赖包。
传递依赖项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去。

解决冲突方式一:第一声明优先原则

概念:哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。
先声明的jar包坐标下的依赖包,可以优先进入项目中。

解决冲突方式二:路径近者优先原则。

直接依赖路径比传递依赖路径近,那么最终项目进入的jar包会是路径近的直接依赖包。

解决冲突方式三:直接排除法(推荐使用)

当我们要排除某个jar包下依赖包,在配置exclusions标签的时候,内部可以不写版本号。
因为此时依赖包使用的版本会默认和本jar包一样。

5.maven工程父子依赖

maven工程是可以分父子依赖关系:一个项目依赖另一个项目。

凡是依赖别的项目或拿到别的项目的依赖包,都属于传递依赖。

比如:当前A项目,被B项目依赖,那么我们A项目中所有jar包都会传递到B项目中,B项目开发者,如果在B项目中导入一套ssm框架的jar包,对于B项目是直接依赖,那么直接依赖的jar包就会把我们A项目传递过去的jar包覆盖掉。

为了防止以上情况出现。我们可以把A项目中主要jar包的坐标锁住,那么其他依赖该项目的项目中,及时有同名jar包直接依赖,也无法覆盖。

  <!-- 统一管理jar包版本 -->
  <properties>
    <spring.version>5.0.2.RELEASE</spring.version>
  </properties>
  
  <!-- 锁定jar包版本:子项目不可更改 -->
  <dependencyManagement>
  	<dependencies>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
      </dependency>
  	<dependencies>
  </dependencyManagement>

【 插件配置】
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值