Maven项目架构管理工具

一. 概述

概念:

  • Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。

核心构成:

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

1. 为什么要学这个技术?

  • 在javaweb开发中,需要使用大量的jar包,我们手动去导入;
  • 如何能够让一个东西自动帮我导入和配置这个jar包
  • 由此Maven诞生了
  1. jar依赖的引入:之前拷贝jar包的操作,随着项目增多,磁盘里面jar包会增加,这样会占用越来越多磁盘空间。Maven里面我们使用坐标来引入jar依赖。(依赖就是我们之前说的jar包)
  2. jar依赖的获取:之前下载jar包,我们通常是登录官网去下载。这样的操作比较麻烦。Maven提供了依赖仓库。
  3. jar依赖的传递:当前项目引入其他项目的时候,可以将引入项目里面的jar直接使用。
  4. 项目的模块化管理:maven提供了原型模块化操作。内置一些项目模板,我们使用命令来创建项目结构。

2. maven的自动化构建

概念:

  • 构建就是以我们编写的 Java 代码、框架配置文件、国际化等其他资源文件、JSP 页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。

构建过程的几个主要环节:

  • ①清理:删除以前的编译结果,为重新编译做好准备。(删除.class文件)
  • ②编译:将 Java 源程序编译为字节码文件。(.java文件转换成.class文件)
  • ③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性 (代码编写完成之后对功能代码的测试运行)
  • ④报告:在每一次测试后以标准的格式记录和展示测试结果 (测试报告:代码的Bug 及其他的说明)
  • ⑤打包:将工程封装为一个压缩文件,Java工程对应jar 包,Web工程对应 war包. (开发完成之后将项目代码统一压缩成一个包,最终需要部署到服务器上使用)
  • ⑥安装:将打包的结果jar 包或 war 包安装到本地仓库中。
  • ⑦部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行

Maven把以上的操作整合到一起,实现了机械化的构建,也就是我们说的自动化构建。

3. Maven项目架构管理工具

我们目前用来就是方便导入jar包的

Maven核心思想:约定大于配置

  • 有约束,不要去违反

Maven会规定好你该如何去编写我们的java代码,必须按照这个规范

4. 下载安装Maven

官网下载https://maven.apache.org/
在这里插入图片描述
下载完之后,解压即可;
在这里插入图片描述

5. 配置环境变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试Maven是否配置完毕
在这里插入图片描述

6. 配置阿里云镜像

在这里插入图片描述

镜像:mirrors

  • 作用:加速我们的下载
  • 国内建议使用阿里云的镜像
    在这里插入图片描述
<mirror>
	<id>nexus-aliyun</id>
	<mirrorOf>central</mirrorOf>
	<name>Nexus aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

7. 建立本地仓库

7.1 什么是maven仓库

在 Maven 的术语中,仓库是一个位置(place)。Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
通俗的理解就是存放jar包的地方。

7.1 maven仓库的分类

在本地的仓库,对应还有一个远程仓库

1、本地仓库:本地磁盘仓库

  • ①系统默认的:C:\Users\admin.m2
  • ②自定义仓库:根据自己的设置(推荐使用)

2、远程仓库:

  • 中央仓库:服务器在国外,所有的资源都可以找到。访问比较慢
    https://mvnrepository.com/
  • 镜像仓库:国内的一些企业将中央仓库的资源下载到国内。比较常见的:阿里云(推荐)、华为云、腾讯云
  • 私服仓库:企业内部搭建的局域网服务器

自己建立一个本地仓库:maven-repo
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8. Maven常用命令

IDEA中自带了
在这里插入图片描述

8.1 原型命令

  1. 项目原型命令:使用命令一键生成项目
    语法:mvn archetype:generate
    使用命令生成的项目,直接可以使用eclipse或idea等开发工具打开。

在这里插入图片描述
在这里插入图片描述
注意:你在哪个盘位置进行此命令,就会在该盘位置创建项目

8.2 编译命令

  • 语法:mvn compile
  • 作用:将项目进行编译,将主程序java文件转换成class文件,maven项目中会生成一个target目录
  • 注意事项:执行命令需要先进入到之前创建好的项目目录下

8.3 清理命令

语法:mvn clean

作用:将项目的编译后的文件删除,也就是将maven项目下的taget目录删除,目的是为了再次编译的进行。

8.4 测试命令

语法:mvn test

作用:运行项目中的测试文件代码,对功能进行测试

说明:
执行测试命令之前先执行了编译命令:将主程序文件和测试文件都进行了编译

8.5 打包命令

语法:mvn package

作用:将maven项目打包成jar或者war.普通的java项目打包成jar,web项目名打包成war。

说明:

  1. 执行打包命令之前会执行编译命令和测试命令
  2. 会在target目录下生成jar或者war包:默认生成jar规范的包(项目名+版本号.jar),war包(项目名称.war)

8.6 安装命令

语法:mvn install

作用:将项目安装到本地仓库,可以提供给其他项目使用

说明:

  1. 执行安装命令之前执行了编译命令和测试命令以及打包命令
  2. 本地仓库中会生成一个当前项目的jar包或war

二. 在IDEA中使用Maven

1. 创建一个Maven web项目教程

创建一个Maven web项目,使用模板尝试一下
在这里插入图片描述
Maven的GAV
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
maven地址也有自带的,但是比较少的模板

在这里插入图片描述

等待项目导入,初始化完毕
在这里插入图片描述
在这里插入图片描述
观察maven仓库中多了什么东西?
在这里插入图片描述
IDEA中Maven设置

  • IDEA项目创建成功后,看一眼Maven的配置
    在这里插入图片描述
    到这里,Maven在IDEA中的配置和使用就OK了

web maven的标准目录结构
在这里插入图片描述

  • 标准目录结构中,如果缺少某个目录,我们可以自己手动创建选择

2. 创建一个普通的java项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里可以手动添加项目依赖,然后maven会自动导入jar包

<dependencies>
    <!--具体依赖的jar包配置文件-->
    <!-- maven的高级之处在于,它会帮你导入这个jar包所依赖的其他jar包-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
</dependencies>

3. maven的依赖坐标

几何中坐标:x y z 表示一个元素在空间中的位置
Maven坐标:groupId artifactId version通过这三个参数确定一个唯一的依赖。

  • 确定项目在本地仓库的位置:查找本地仓库中安装后的jar或者war包
  • 确定引入的依赖jar包:jdbc dbutisl
    项目中引入依赖方式:通过坐标形式引入依赖,也就是我们之前的jar的引入。
<depedency>
	<groupId>junit<groupId>
	<artifactId>junit<aetifactId>
	<version>3.8.1<version>
</depedency>
  • 获取依赖的坐标的方式:maven中央仓库获取
    https://mvnrepository.com/

4. pom文件

pom.xml是maven的核心配置文件

POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

POM 中可以指定以下配置:

  • a.项目依赖
  • b.插件
  • c.执行目标
  • d.项目构建 profile
  • e.项目版本
  • f.项目开发者列表
  • g.相关邮件列表信息
    在这里插入图片描述
<?xml version="1.0" encoding="UTF-8"?>

<!--maven的版本和头文件-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <!--项目的版本-->
  <modelVersion>4.0.0</modelVersion>

  <!--这里是我们刚刚配置的GAV,当前项目的坐标-->
  <groupId>com.pudding</groupId>
  <artifactId>javaweb-01-maven</artifactId>
  <version>1.0-SNAPSHOT</version>

  <!--
    项目的打包方式
    jar:java应用(默认方式)
    war:javaweb应用
  -->
  <packaging>war</packaging>


  <!--配置-->
  <properties>
    <!--项目的默认构建编码-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!--编译版本-->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>


  <!--依赖管理系统:管理jar包-->
  <!--项目依赖-->
  <dependencies>
    <!--具体依赖的jar包配置文件-->
    <!-- maven的高级之处在于,它会帮你导入这个jar包所依赖的其他jar包-->
    <!--一个jar包对应一个依赖-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
  </dependencies>

  <!--项目构建用的东西-->
  <build>
    ...
  </build>
</project>

maven由于他的约定大于配置,我们之后可能遇到我们写的配置文件,无法被导出或者生效的问题

解决方案:在bulid中配置resource,来防止我们资源导出失败的问题

当有些依赖报红的话:那么我们可以通过刷新maven重写下载jar依赖

4. IDEA中使用Maven

在这里插入图片描述
这个只有在Web应用下才会有

在IDEA中标记文件夹功能
在这里插入图片描述
或者使用如下方式
在这里插入图片描述
选中当前项目
在这里插入图片描述

5. IDEA生成目录树

在这里插入图片描述

三. 在IDEA中配置Tomcat

1. 配置方式

方式一:

先创建一个maven web项目
在这里插入图片描述
和普通的web项目一样。配置本地的tomcat服务器即可
在这里插入图片描述
在这里插入图片描述
local表示本地服务器
remote表示远程的tomcat服务器
在这里插入图片描述
在这里插入图片描述
警告:没有一个人工的配置

解决警告问题
为什么会有这个问题:我们访问一个网站,需要指定一个文件夹的名字;
在这里插入图片描述
在这里插入图片描述
然后启动tomcat
在这里插入图片描述
在这里插入图片描述

第二种方式:maven中配置tomcat插件:pom.xml中设置插件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. 常见问题

2.1 找不到相应的war包

注意:使用maven3.6.3的时候,会有一些问题
在这里插入图片描述

2.2 maven默认的web项目中的web.xml版本问题

在这里插入图片描述
这个生成的版本比较老,我们应该参考tomcat中webapps下的默认的ROOT项目中的WEB-INF里面的web.xml文件中的dtd。
在这里插入图片描述

四. Maven仓库的使用

Maven仓库https://mvnrepository.com/进行查找下载对应的dependencies
在这里插入图片描述
然后使用,如果爆红的话,就alt+enter然后添加到maven

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值