Maven总结1/3-----概述

1.Maven 概述

maven是一个项目管理工具

(1)依赖管理

传统工程 maven工程
直接把jar包放在在项目中 真正的jar包放置在仓库中,项目中只用放置jar包的座标

(2) 依赖范围

Compile Test Runtime Provided

(3)仓库的种类

种类 作用
本地仓库
远程仓库(私服) 放置公司内部开发所需要的jar包
中央仓库 安装完maven之后,本地maven自动连接中央仓库。

(4)仓库之间的关系

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

2.Maven 的好处

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

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

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

3. Maven生命周期

命令 含义
clean 构建项目的时候,清理之前构建项目的信息
validate 验证项目是否正确,所有必要的信息可用
compile 对src/main下的目录进行编译
test 使用合适的单元测试框架测试编译的源代码。这些测试不应该要求代码被打包或部署
package 本地项目直接打包,打包在本地编译目录—target目录下
verify 对集成测试的结果执行任何检查,以确保满足质量标准
install 把包安装到本地仓库
deploy 本地做好的项目直接打包上传到私服,与其他开发人员和项目共享

4. 座标的书写规范

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

示例:

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
	  <!--座标作用域,非必填-->
      <scope>test</scope>
</dependency>

5. 解决冲突

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

maven导入jar包中的一些概念

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

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

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

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

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

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

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

6.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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章