【maven】maven安装配置及相关依赖说明

maven下载安装

下载地址:maven下载
详情请见这篇博客:项目后端配置过程

maven自身的目录结构

bin:存放了 maven 的命令
boot:存放了一些 maven 本身的引导程序,如类加载器等
conf:存放了 maven 的一些配置文件,如 setting.xml 文件
lib:存放了 maven 本身运行所需的一些 jar 包
在这里插入图片描述

maven项目下的目录结构

maven项目的标准目录结构:

  • src/main/java目录 核心代码部分
  • src/main/resources 配置文件部分
  • src/test/java目录 测试代码部分
  • src/test/resources 测试配置文件
  • src/main/webapp 页面资源,js,css,图片等

是什么

一个对Maven比较正式的定义

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

再通俗易懂一点来说,maven就是一个jar包管理工具,同时掌控项目中生命周期的每一个阶段,来对项目的每一个阶段进行管理。
他可以帮我们构建工程,管理 jar 包,编译代码,还能自动运行单元测试,打包,生成报表,甚至部署项目,生成 Web 站 点等等。能够使程序员从繁琐的工程中解脱出来,只专注与代码的编写。

关于jar包(依赖管理)

在我们传统的项目中,jar包放在项目工程内部。如果一个大的项目工程包含多个子项目、或多个项目工程共同存在,那么jar包需要同时存在于每一个项目中,导致项目庞大,占用空间。

而用maven开发的crm项目,jar包并不在工程内部,所有需要的jar包会被放到一个叫做仓库的地方,项目中用到了那些jar包,通过在 pom.xml 文件中添加所需 jar 包的坐标,到仓库中找到。jar包文件并不会加载到项目中,而是在需要时,进行加载即可。这样可以多个项目同时公用一个仓库中的jar包,使代码可重用,项目变得更加轻量。
maven中通过建立索引,可以大大提高加载 jar 包的速度,使得我们认为 jar 包基本跟放在本地的工程文件中再读取出来的速度是一样的
在这里插入图片描述
jar包仓库分为以下三种

  • 本地仓库:位于电脑本地,用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包, 优先从本地仓库查找 。
    本地仓库分享:链接:https://pan.baidu.com/s/1_ASg_XUsUcA3vK3YYEytVg
    提取码:gp8n
  • 远程仓库(私服):一般在公司中会有一个专门的私服,用来存放一些公司中比较常用的jar包和插件,可通过setting文件进行配置。加载jar包时,如果本地仓库中没有,会去私服中进行加载。远程仓库可以在互联网内也可以在局域网内。
  • 中央仓库:在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是最大的,jar包最全的一个仓库,供全球用户使用,并由 Maven 团队自己维护。如果本地仓库和私服中都没有,会自动从中央仓库中下载,下载后放到私服中(如果没有设置私服,则放到本地仓库)。

在这里插入图片描述

关于生命周期和相关命令(一键构建)

maven中存在三套生命周期:清理生命周期、默认生命周期、站点生命周期。
默认生命周期中包括:编译、测试、打包、安装、发布。默认生命周期中,涵盖了整个项目的构建过程。并且maven也提供了一键构建的功能,一个命令即可将项目构建成功。
在这里插入图片描述
maven自身集成了tomcat插件,所以在默认生命周期中,可以对项目进行编译、测试、打包、安装、发布等操作。命令对应如下:

mvn clean :清理,将已经编译好的项目文件删除(target文件)
每个人电脑中的开发环境是不同的,在导入别人的项目后需要进行mvn clean操作,清除他人项目的编译环境,放置运行时报错。

mvn compile:编译,将src目录下main文件夹下的代码进行编译,放在target文件中。

mvn test :测试,将src目录下的test文件夹下的代码进行编译,放在target文件中。同时也编译了main文件夹中的代码。

mvn package:打包,将项目进行打包,即将main和test两个文件夹同时进行编译,放到target文件中,同时将项目打包文件,放在target目录下。
打包文件的类型根据项目中pom文件中的定义决定,通常动态web工程打war包,java工程打jar包。pom :用于 maven 工程的继承,通常父工程设置为 pom
在这里插入图片描述
mvn install:安装,将项目进行打包,即将main和test两个文件夹同时进行编译,放到target文件中,同时将项目打包文件,放在target目录下。同时将打包好的文件放入本地仓库中。
在这里插入图片描述

idea中创建maven工程

具体可参考此篇博客Spring Boot项目框架搭建

当向pom文件中导入依赖的jar包坐标时,可根据自己的框架类型,项目中需要的jar包和插件进行导入。但是很多情况我们是不知道 jar 包的坐标的,可以通过如下链接查询:
http://search.maven.org/
http://mvnrepository.com/

maven中的依赖说明

A 依赖 B,需要在 A 的 pom.xml 文件中添加 B 的坐标,添加坐标时需要指定依赖范围,依赖范围包 括:

compile:编译范围,指 A在编译时依赖 B,此范围为默认依赖范围。编译范围的依赖会用在 编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。

provided:provided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依赖在编译和测试时需要,在运行时不需要,比如:servlet api 被 tomcat 容器提供。

runtime:runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc 的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。

test:test 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用, 比如:junit。由于运行时不需要所以test范围依赖不会被打包。

system:system 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR 文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用

示例:

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

pom文件中的标签说明

< project > :文件的根节点 .
< modelversion > : pom.xml 使用的对象模型版本
< groupId > :项目名称,一般写项目的域名
< artifactId > :模块名称,子项目名或模块名称
< version > :产品的版本号 .
< packaging > :打包类型,一般有 jar、war、pom 等
< name > :项目的显示名,常用于 Maven 生成的文档。
< description > :项目描述,常用于 Maven 生成的文档
< dependencies> :项目依赖构件配置,配置项目依赖构件的坐标
< build> :项目构建配置,配置编译、运行插件等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值