项目管理工具-Maven

Maven简介

Maven是一个项目管理工具。

Maven的作用

1.maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到工程中。——依赖管理(jar包管理)
2.maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。——项目构建
3.maven对工程分模块构建,提高开发效率。

Maven的概念模型

1.项目对象模型 (Project Object Model)。POM对象模型,每个maven工程中都有一个pom.xml文件,定义工 程所依赖的jar包、本工程的坐标、打包运行方式。
2.依赖管理系统(基础核心 )。maven通过坐标对项目工程所依赖的jar包统一规范管理。
3.maven定义一套项目生命周期。清理、初始化、编译、测试、报告 、打包、部署、站点生成。
4.一组标准集合。maven工程有自己标准的工程目录结构、定义坐标有标准。
5.maven 管理项目生命周期过程都是基于插件完成的,例如:开发中使用的tomcat插件。

Maven的仓库

Maven的仓库类型

  1. 本地仓库
    本机电脑上缓存jar包的文件夹。Maven优先从本地仓库中加载jar包。如果本地仓库中找不到,才会去远程仓库中下载jar包,并把jar包缓存到本地仓库中。
  2. 远程仓库- 私服
    一些企业、社区提供的jar仓库服务,这些jar仓库可能对整个互联网提供服务,也可以是一个企业内部使用的jar仓库,所以远程仓库也叫私服。(在公司内部架设一台私服,私服代理其他的远程仓库, 当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从代理的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务,还可以把一些无法从外部仓库下载到的构件上传到私服上。)
  3. 远程仓库- 中央仓库
    仓库中jar由专业团队(maven团队)统一维护。中央仓库地址是内置到了Maven软件中的,仓库地址:http://repo1.maven.org/maven2

Maven的坐标

Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。为了能自动化的解析任何一个Java构件,Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标。maven查询坐标常用网站

坐标组成:

  • groupId:公司域名倒写
  • artifactId:项目名/模块名
  • version:版本号

Maven安装与配置

下载地址

安装Maven与配置环境变量

  1. 安装Maven
    Maven是免安装的,直接解压就行。

    解压后目录结构
    在这里插入图片描述
    主要目录介绍

  • bin: Maven的可执行命令文件夹
  • boot: Maven的引导程序(类加载器)
  • conf : 配置文件夹
  • lib: Maven的核心程序代码(Maven的jar’包)
  1. 配置环境变量

    前提:JDK环境变量已经正确配置。

    MAVEN_HOME=Maven的解压目录
    在这里插入图片描述

    ②环境变量Path中添加%MAVEN_HOME%\bin
    在这里插入图片描述
    验证Maven是否配置成功,打开cmd,执行命令mvn -version可查看到Maven的版本信息
    在这里插入图片描述

配置本地仓库

准备本地仓库文件在这里插入图片描述
在maven的安装目录conf/ settings.xml文件修改,配置如下:
在这里插入图片描述

Maven项目的目录结构

在这里插入图片描述
注:一个项目要想使用Maven进行管理,那么这个项目的目录结构就必须要符合Maven的要求

Maven构建项目

项目构建常用命令介绍:(暂且了解)

  1. 清理Maven项目的target目录:mvn clean
  2. 重新编译Maven项目,编译后的结果在自动生成的target目录中:mvn compile
    在这里插入图片描述
  3. 执行Maven项目中的单元测试代码:mvn test

注:

  1. 执行的是Maven项目的test目录中的单元测试类
  2. 单元测试类名必须是Test结尾,例如:DemoTest.java
  1. 把Maven项目进行打包,java项目打包成.jar, web项目打包成.war,聚合工程打成pom包:mvn package
  2. 把Maven项目安装到本地仓库中:mvn install
    在这里插入图片描述
    注:target目录用来存放项目构建后的文件和目录、jar包、war包、编译的class文件。

Maven管理依赖

1. IDEA创建Maven工程

①IDEA配置Maven

在这里插入图片描述
配置后,创建Maven项目时很慢
可做如下设置
1.在VM Options加上-DarchetypeCatalog=local
在这里插入图片描述
2.或者在VM Options加上-DarchetypeCatalog=internal,也较慢。

②创建Maven的java项目

1
在这里插入图片描述
2
在这里插入图片描述
3
在这里插入图片描述
4
在这里插入图片描述
5.注意
在这里插入图片描述
运行
在这里插入图片描述
java工程目录结构
在这里插入图片描述
扩展:如要添加配置文件或jar包,则要新建resources文件夹
在这里插入图片描述
新建resources文件夹右击
在这里插入图片描述
标记后,idea就可以识别该文件夹了
在这里插入图片描述
同理
要导入配置文件,新建resources文件夹后按步骤最后选择Test Resources Root
缺少java代码编写目录,则新建java文件夹按步骤最后选择Sources Root

③创建Maven的JavaWeb项目

创建javaweb项目与创建javase项目类似,选择Maven骨架时,选择maven-archetype-webapp即可:
在这里插入图片描述
javaweb项目创建好的目录结构如下,根据我们的需要可在原有目录上按Maven要求的目录结构添加目录,并标记目录。在idea帮我们创建的项目中index.jsp(好像不太规范)和web.xml(版本太低)可删除,导入常用模板。
在这里插入图片描述
把maven项目部署到tomcat上与普通方式直接创建javaweb的项目部署在tomcat的方式一样。
但是普通方式直接创建javaweb的项目,它会引入servlet相关jar包,而通过maven创建的javaweb项目创建时并没有引入,所以在编写代码时,创建servlet类会报错,这是我们就需要引入servlet相关依赖。
在这里插入图片描述

④引入依赖

项目中需要使用jar包,只需要把jar包的坐标配置到项目的pom.xml中即可,通过导入依赖坐标,无需手动导入jar包就可以引入jar。在pom.xml的<dependencies>标签里增加以下内容(以上面缺少servlet相关依赖为例):引入后,就可以解决以上没有导入servlet相关jar包的报错了。
在这里插入图片描述

⑥依赖范围

创建maven项目时,自动引入的依赖(单元测试相关jar包)如下

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>  <!--依赖范围-->
    </dependency>

依赖范围介绍:

如果项目中引入的jar包过多,可能会出现jar包冲突,我们可能设置jar包不同的依赖范围来解决jar包冲突。

Maven的依赖范围:

  • compile:默认的依赖范围,在全范围有效
  • test单元测试有效,如以上junit使用的就是test范围
  • provided:其它地方已经提供了,就优先使用已经提供了的。如servlet-api(tomcat容器已提供)通常使用provided范围,jsp-api也是。
  • runtime运行时有效,编译时无效,一般数据库的驱动包使用runtime范围。
  • system:引入本地仓库之外的本地jar包。一般不使用

2.maven的依赖传递

如引入spring-context,spring-context所依赖的包也都会导进来,这就是maven的依赖传递。
在这里插入图片描述

3.maven解决jar包冲突问题

①第一声明优先原则

即哪个jar包声明在前面,这个先声明的jar包下的依赖包,就会优先引入到项目中。

②就近原则

如直接依赖比传递依赖路径近,那么优先引入到项目的jar包是路径近的直接依赖包。
说明:直接依赖,即项目中直接导入的jar包就是项目的直接依赖包。

③直接排除法

在这里插入图片描述
使用直接排除法,第一声明的jar包不传递依赖4.2.4版本的spring-core
在这里插入图片描述
扩展:如何查看依赖关系
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: dockerfile-maven-plugin 是一个 Maven 插件,用于自动生成 Docker 镜像的 Dockerfile 文件。它可以根据 Maven 项目的 pom.xml 文件和一些配置参数,自动生成 Dockerfile 文件,并将其用于构建 Docker 镜像。这个插件可以大大简化 Docker 镜像构建的过程,提高开发效率。 ### 回答2: dockerfile-maven-plugin 是一个用于帮助在 Maven 项目中使用 Dockerfile 构建和管理 Docker 镜像的插件。 在传统的开发中,我们需要手动构建 Docker 镜像,并在 Dockerfile 中定义构建步骤和依赖关系。而使用 dockerfile-maven-plugin 可以将这一过程集成到 Maven 构建中,进一步简化了开发过程。 使用 dockerfile-maven-plugin,我们可以在 Maven 的 pom.xml 文件中配置一系列的构建参数和指令。这些参数包括 Dockerfile 文件路径、镜像名称、版本、标签等。通过这些配置,插件可以自动地根据 Dockerfile 构建 Docker 镜像,并将其推送到远程镜像仓库。 该插件还提供了一些额外的特性,例如多阶段构建、构建缓存、构建参数传递等。其中,多阶段构建允许我们按照不同的阶段构建镜像,以便优化镜像大小和构建速度;构建缓存则可以在多次构建中重复使用相同的构建步骤,避免重复构建;构建参数传递则可以在构建过程中传递环境变量或者其他参数,灵活控制镜像构建的过程。 总而言之,dockerfile-maven-plugin 提供了一种便捷的方式,将 Docker 镜像构建过程整合到 Maven 构建中。使用该插件,我们可以在 Maven 构建过程中自动构建和管理 Docker 镜像,提高了开发效率和部署一致性。 ### 回答3: Dockerfile-maven-plugin是一个maven插件,用于帮助开发人员在构建过程中生成Docker镜像。Docker镜像是一个轻量级、可移植、自包含的容器,使应用程序的部署更加简单和可靠。 使用Dockerfile-maven-plugin,我们可以为项目配置一个Dockerfile文件,该文件指定了如何构建和运行应用程序的容器。该插件提供了一系列的目标和参数,用于自动化构建、镜像打包和标记、上传到Docker Hub等操作。 在配置中,我们可以指定应用程序的依赖项、环境变量、端口映射等信息,以及Docker镜像的基础映像和其他镜像相关的配置。此外,我们还可以使用插件的额外功能,如构建多阶段、使用多个Dockerfile等。 使用Dockerfile-maven-plugin,我们可以在maven构建过程中集成Docker镜像的构建和发布,减少了手动操作的复杂性和错误的可能性。此外,该插件还可以与其他maven插件和工具集成,实现更复杂的自动化构建流程。 总而言之,Dockerfile-maven-plugin是一个方便的maven插件,用于在项目构建过程中生成Docker镜像。它帮助简化了Docker容器的构建和部署过程,提高了开发人员的效率,并且可以与其他工具集成,实现更复杂的构建流程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinking in Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值