Java Web-Maven

Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具

Maven的作用

1.依赖管理:方便快捷的管理项目依赖资源(jar包),避免版本冲突问题

我们有的项目需要大量的jar包,采用手动导包的方式非常繁琐,并且版本升级也不方便。当我们使用maven,只要创建maven工程,只需要在pom.xml配置文件中配置即可。

2.统一项目结构:提供标准,统一的项目结构

我们程序员使用的开发工具很多,但构建出来的项目目录结构有差异,使用Maven提供了标准的项目结构,这样不同开发工具开发的项目之间可以相互导入

pom.xml是maven的核心依赖,当前项目要导入的核心依赖都在里面

3.项目构建:提供便准跨平台的自动化项目构建方式

我们可以通过里面的指令快速完成清理,编译,测试打包等工作

Maven模型

各个插件就可以完成各种功能例如编译插件进行编译,打包阶段进行打包,而每部操作都会产生对应的文件,放在target目录下

项目对象模型是指在pom.xml文件中通过一小段配置信息来 描述这个工程,如下图标明了项目的组织,模块名称,版本。他们称为工程的坐标

当我们要关联jar包,就可以在xml文件当中添加依赖管理模型。在xml文件中用标签添加依赖

添加依赖之后,maven会自动到仓库查找依赖。首先到本地仓库查找,如果本地仓库没有,会连接中央仓库的jar包,下载到本地仓库。为了提高加载速度,还会引用公司自己搭建的仓库(私服),只要公司中有一个人用到了依赖,就会把依赖下载到私服中

仓库:是用于存储资源,管理各种jar包的

Maven安装

1.下载地址:Maven – Download Apache Maven

bin目录存放的是可执行文件,conf目录存放的是配置文件,lib里是存放的jar包资源

2.配置本地仓库:配置一个地址作为本地仓库用来存储下载的jar包资源

方法:修改conf/setting.xml中的<localRepsitory>为一个指定目录

3.配置私服:修改conf/settings.xml中的<mirrors>标签,为其添加如下子标签

4.配置环境变量:MAVEN_HOME为maven的解压目录,并将其bin目录加入PATH环境变量。

IDEA集成maven

配置maven环境
  • 配置当前工程的maven环境

配置安装路径,xml文件和本地仓库

关联的jre是否是对应的版本

和配置java语言的字节码版本

  • 配置全局maven环境工程

在主界面配置即可

IDEA创建maven项目

 1.创建项目,选择maven Archetype,并修改 Archetype的值

2.填写坐标信息

坐标是资源的唯一标识,通过坐标可以定义资源的唯一位置

使用坐标来定义项目或引入项目中需要的依赖

导入maven项目

方式一:打开IDEA,选择右侧Maven面板,点击+号,选中对应项目的pom.xml文件,双击即可。

 

如果点没有弹出对话框,点击Apperance勾选进行调出

方式二:模块中导入pom文件

依赖管理

依赖配置

依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。
配置:
1. 在pom.xml中编写<dependencies>标签

2. 在<dependencies>标签中 使用<dependency>引入坐标

3. 定义坐标的 groupld, artifactid, version

4. 点击刷新按钮,引入最新加入的坐标

第一次使用依赖可能未下载,需要点击刷新按钮刷新联网下载依赖

如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索。

依赖传递

依赖具有传递性,被依赖的资源如果依赖了其他资源,那么依赖的依赖也会导入 

排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。

依赖范围

依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope> ...< / scope>设置其作用范围

作用范围:

主程序范围有效。(main文件夹范围内)
测试程序范围有效。(test文件夹范围内)
是否参与打包运行。(package指令范围内)

生命周期

Maven中有3套相互独立的生命周期:

 clean: 清理工作。

 default:核心工作,如:编译、测试、打包、安装、部署等。

 site:生成报告、发布站点等。

每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。

lifecycle就是生命阶段。

我们来讲几个重要的生命阶段:

clean:移除上一次构建生成的文件

 compile:编译项目源代码

 test:使用合适的单元测试框架运行测试(junit)

 package:将编译后的文件打包,如:jar、war等

 install:安装项目到本地仓库

执行指定生命周期的方式:

在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行。

 分模块设计

没分模块:不便维护,组件难以复用。于是便可以将项目进行分模块设计。

将项目按照功能拆分成若干个子模块,方便项目的维护,扩展,模块间的相互调用,资源共享。

模块继承

防止多模块之间引入同一依赖的繁琐问题,可以使用Maven的继承解决。

  

我们发现所有的SpringBoot工程都有一个统一的父工程 Spring-Boot-strart-parent。

Maven当中一个工程只能继承一个父工程。但是所有的SpringBoot项目都继承一个默认的父工程,那我们如何实现继承呢?使用多重继承,也就是只需要父工程继承默认工程,子工程继承复工程。

1.创建一个父工程模块,通过packaging标签 设置打包方式为pom

  • jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
  • war:普通web程序打包,需要部署在外部的tomcat服务器中运行(Servelet,SpringMVC)
  • pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理

2.让子工程继承父工程,并将子工程共有的依赖引入在父工程当中,实现依赖的继承。同时在子工程的pom.xml文件中,通过relativePath标签来配置继承关系。配置父工程pom文件的相对路径。

实现:<parent>...<parent>指定父工程坐标

注意:

  • 在子工程中,配置了继承关系之后,坐标中的groupId是可以省略的,因为会自动继承父工程的。
  • 若父工程和子工程都配置了同一个依赖的不同版本,以子工程的为准

版本锁定

在maven中,可以在父工程pom文件通过<dependencyManagement>来统一管理依赖版本。这样子工程引入依赖时,无需指定<version>版本号,父工程同一管理。变更依赖版本,只需在父工程中统一变更。

maven自定义属性功能:为了能够统一管理引入的版本号,可以通过自定义属性的方法来引入。

通过<properties>标签来定义属性

在依赖的<version>标签中通过${}占位符来进行绑定。

聚合  

聚合是将多个多个模块组织成一个整体,同时进行项目的构建。

 我们需要先将项目依赖的模块以及父工程先install,来往maven的本地仓库中安装jar包,这样在项目打包时才能在本地仓库中找到要依赖的jar包。这样很繁琐,能通过聚合来进行简化。

 需要一个聚合工程:聚合工程是一个不具有业务功能的"空工程"(有且只有一个pom文件)。

注意:通常父工程也是聚合工程。聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。

可以通过maven中通过<modules>设置当前聚合工程包含模块。

作用

  • 聚合用于快速构建项目
  • 用于简化依赖配置、统一管理依赖

相同点:

  • 聚合与继承的pom.xm1文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
  • 聚合与继承均属于设计型模块,并无实际的模块内容

不同点:

  • 聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些
  • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

私服

资源上传与下载

首先将jar包安装到本地仓库中,然后执行deploy把本地仓库的资源发布到私服仓库当中。

项目中要指定仓库的url地址。访问私服的用户名和密码。

私服当中有很多仓库,有一个中央仓库,relase,snapshot。

项目版本:

  • RELEASE(发行版本):功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中。
  • SNAPSHOT(快照版本):功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中。

1.设置私服的访问用户名和密码(maven配置文件settings.xml中的servers中配置)

2.IDEA的maven工程的pom文件中配置上传地址,在聚合工程中进行配置即可

3.设置私服依赖下载的仓库组地址(settings.xml中的mirrors),如果配置过阿里云,需要直接替换掉

 

4.profile中的配置 ,指定这两个版本都能从配置的仓库组中下载,因为默认情况下不稳定的版本不允许从私服中下载。

5.执行deploy生命周期

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值