自学内容网 自学内容网

Java Maven day1014

ok了家人们,今天学习了如何安装和配置Maven项目,我们一起去看看吧

.Maven概述

1.1 Maven作用

Maven 是专门用于管理和构建 Java 项目的工具,它的主要功能有:
  • 提供了一套标准化的项目结构
  • 提供了一套标准化的构建流程(编译,测试,打包,发布……
  • 提供了一套依赖管理机制
标准化的项目结构:
项目结构我们都知道,每一个开发工具( IDE )都有自己不同
的项目结构,它们互相之间不通用。我再 eclipse 中创建的目
录,无法在 idea 中进行使用,这就造成了很大的不方便,如下
: 前两个是以后开发经常使用的开发工具。
Maven 提供了一套标准化的项目结构,所有的 IDE 使用
Maven 构建的项目完全一样,所以 IDE 创建的 Maven 项目可以
通用。如下图右边就是 Maven 构建的项目结构。
标准化的构建流程:
如上图所示我们开发了一套系统,代码需要进行编译、测试、打包、发布,这些操作如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。
依赖管理:
依赖管理其实就是管理你项目所依赖的第三方资源( jar 包、
插件)。如之前我们项目中需要使用 JDBC Druid 的话,就需
要去网上下载对应的依赖包(当前之前是老师已经下载好提供
给大家了),复制到项目中,还要将 jar 包加入工作环境这一
系列的操作。如下图所示
Maven 使用标准的 == 坐标 == 配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。
如上图右边所示就是 mysql 驱动包的坐标,在项目中只需要写
这段配置,其他都不需要我们担心, Maven 都帮我们进行操作了。

1.2 Maven简介

Apache Maven 是一个项目管理和构建工具,它基于项目对象
模型 (POM) 的概念,通过一小段描述信息来管理项目的构建、
报告和文档。
官网 : http://maven.apache.org/
1.2.1 Maven模型
  • 项目对象模型 (Project Object Model)
  • 依赖管理模型(Dependency)
  • 插件(Plugin)

项目对象模型就是将我们自己抽象成一个对象模型,有自己专属的坐标.
依赖管理模型则是使用坐标来描述当前项目依赖哪些第三方jar包。
如我们需要编译, Maven 提供了一个编译插件供我们使用,
我们需要打包, Maven 就提供了一个打包插件提供我们使用等。
1.2.2 Maven仓库
大家想想这样的场景,我们创建 Maven 项目,在项目中使用
坐标来指定项目的依赖,那么依赖的 jar 包到底存储在什么地
方呢?其实依赖 jar 包是存储在我们的本地仓库中。而项目运
行时从本地仓库中拿需要的依赖 jar 包.
  • 本地仓库:自己计算机上的一个目录
  • 中央仓库:由Maven团队维护的全球唯一的仓库       地址: https://repo1.maven.org/maven2/
  • 远程仓库(私服):一般由公司团队搭建的私有仓库

  • 当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
        如果有,则在项目直接引用;
        如果没有,则去中央仓库中下载对应的jar 包到本地仓库.
  • 还可以搭建远程仓库,将来jar包的查找顺序则变为:

        本地仓库——远程仓库——中央仓库

.Maven安装配置

2.1 Maven的下载

官方网站: http://maven.apache.org/
下载页面: http://maven.apache.org/download.cgi
  • 点击archives(存档)

  • 选择版本,然后选择binaries(二进制文件)

  • 下载压缩包

2.2 Maven的安装

注意: maven 的安装需要依赖 JDK 的安装,所以必须先安装完成JDK 且配置好 jdk 环境变量后在进行 maven 的安装!!
maven 的安装很简单,就是直接解压文件就行了。(安装路径避免包含中文!)
目录
功能说明
bin
二进制的可执行文件,如: mvn.cmd maven 的核心可执行文件
boot
第三方类加载器插件,类似于 ClassLoader
conf
配置文件夹,其中的 settings.xml 是用于 配置本地 仓库
lib
maven 自身运行所需要的 jar

2.3 Maven的环境变量配置

  • 右击我的电脑,选择属性

  • 点击高级系统设置

  • 点击环境变量

  • 在系统变量区里点击:新建

  • 新建变量名为MAVEN_HOME,变量值为你的maven解压文件的目录,设置完成后点击确定

  • 系统变量里双击Path变量,或者单击path再点编辑

  • 新建%MAVEN_HOME%\bin

  • 键盘win+r 弹出运行,输入cmd,点击确定

  • cmd窗口中键入mvn -version后回车,如果出现下面的版本号,及说明maven安装成功

2.4 本地仓库的配置

  • 在一个磁盘中创建一个文件夹,取名repository

  • 打开maven的安装目录,选择conf文件夹中的setting.xml文件

  • 修改文件settings.xml
打开 settings.xml 文件:发现本地仓库默认的地址为当前用户的/.m2/repository 目录。
我们需要自己重新设置本地仓库的地址。使用localRepository配置,修改成刚刚创建的文件夹的目录.

2.5 配置阿里云私服

安装好 Maven 时,要及时的修改 Maven 下载的镜像地址,最
好改为国内的下载镜像,例如阿里云中央仓库,华为云中央仓库。
同样打开 conf 文件夹中的 setting.xml 文件,找到标签,把下
面的代码复制到标签中。
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public
</url>
</mirror>

2.6 配置JDK

  • 打开setting.xmlctrl+f,搜索/path/to/tomcat/instance
  • 复制以下代码到红线位置,这里是用的1.8的,根据每个人不同自己来适当修改
<!-- java1.8版本 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

.IDEA 配置 Maven

3.1 IDEA配置Maven环境

  • 选择 IDEA File --> Settings

  • 搜索 maven,每次在 IDEA 创建 Maven 项目时,按照上述方法进行配置即可。

3.2 Maven 坐标详解

  • Maven 中的坐标是资源的唯一标识
  • 使用坐标来定义项目或引入项目中需要的依赖
Maven 坐标主要组成
  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.baidu
  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 product-service
  • version:定义当前项目版本号
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connectorjava</artifactId>
<version>8.0.25</version>
</dependency>

3.3 IDEA创建Maven项目

  • 创建模块,选择Maven,点击Next

  • 填写模块名称,坐标信息,点击finish,创建完成

  • 创建好的项目目录结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:schemaLocation="http://maven.apache.org/POM/
4.0.0 http://maven.apache.org/xsd/maven-
4.0.0.xsd">
<!--描述这个POM文件是遵从哪个版本的项目描述符-->
<modelVersion>4.0.0</modelVersion>
<!--当前项目的坐标-->
<groupId>com.lzw</groupId>
<artifactId>maven_01</artifactId>
<version>1.0-SNAPSHOT</version>
<!--当前项目的参数-->
<properties>
<!--Maven默认使用的是JDK1.5版本-->
<!--当前项目使用jdk1.8进行开发和编译-->
<maven.compiler.source>8</maven.compiler.source
>
<maven.compiler.target>8</maven.compiler.target
>
</properties>
</project>

3.4 IDEA导入Maven项目

  • 选择右侧Maven面板,点击 +

  • 选中对应项目的pom.xml文件,双击即可

        

  • 如果没有Maven面板,选择
View --> Appearance --> Tool Window Bars

3.5 依赖管理

3.5.1 使用坐标引入jar
  • 在项目的 pom.xml 中编写 标签
  • 在 标签中 使用 引入坐标
  • 定义坐标的 groupIdartifactIdversion
  • 点击刷新按钮,使坐标生效
  • 具体的坐标我们可以到如下网站进行搜索:https://mvnrepository.com/
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connectorjava</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
3.5.2 快捷方式导入jar包的坐标
  • pom.xml 中 按 alt + insert,选择 Dependency

  • 在弹出的面板中搜索对应坐标,然后双击选中对应坐标

  • 点击刷新按钮,使坐标生效

3.5.3 依赖范围
通过设置坐标的依赖范围 (scope) ,可以设置 对应 jar 包的作用
范围:编译环境、测试环境、运行环境。
如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范
围。 那么这个依赖就只能作用在测试环境,其他环境下不能
使用
依赖范围
编译
classpath
测试
classpath
运行
classpath
例子
compile
YYY
logback
test
-Y-
Junit
provided
YY-
servlet-api
runtime
-YY
jdbc 驱动
system
YY-
存储在本地的
jar
  • compile :作用于编译环境、测试环境、运行环境
  • test : 作用于测试环境。典型的就是 Junit 坐标,以后使用
    Junit 时,都会将 scope 指定为该值
  • provided :作用于编译环境、测试环境。我们后面会学习
    servlet-api ,在使用它时,必须将 scope 设置为该值,不
    然运行时就会报错
  • runtime : 作用于测试环境、运行环境。 jdbc 驱动一般将
    scope 设置为该值,当然不设置也没有任何问题
注意:如果引入坐标不指定 scope 标签时,默认就是 compile
值。以后大部分 jar 包都是使用默认值。

.maven项目构建的生命周期

4.1 maven项目构建的生命周期

Maven 出现之前,项目构建的生命周期就已经存在,软件
开发人员每天都在对项目进行清理,编译,测试及部署。虽然
大家都在不停地做构建工作,但公司和公司间,项目和项目
间,往往使用不同的方式做类似的工作。
Maven 的生命周期就是为了对所有的构建过程进行抽象和统
一。 Maven 从大量项目和构建工具中学习和反思,然后总结
了一套高度完美的,易扩展的生命周期。这个生命周期包含了
项目的清理,初始化,编译,测试,打包,集成测试,验证,
部署和站点生成等几乎所有构建步骤。
Maven 的生命周期是抽象的,这意味着生命周期本身不做任
何实际工作, Maven 的设计中,实际任务(如源代码编
译)都交由插件来完成。
maven 拥有三套相互独立的生命周期,分别是 clean default
site clean 生命周期的目的是 清理项目 default 生命周
期的作用是 构建项目 site 生命周期的目的是 构建项目站点.
clean 生命周期
clean 生命周期的目的是清理项目,它包含三个阶段:
  • pre-clean 执行一些清理前需要完成的工作;
  • clean 清理上一次构建生成的文件;
  • post-clean 执行一些清理后需要完成的工作;

default生命周期

default 生命周期定义了真正构建项目需要执行的所有步骤,
它是所有生命周期中最核心的部分。其中的重要阶段如下:
compile :编译项目的源码,一般来说编译的是
src/main/java 目录下的 java 文件至项目输出的主 classpath
目录中;
test :使用单元测试框架运行测试,测试代码不会被打包
或部署;
package :接收编译好的代码,打包成可以发布的格式,
jar war
install : 将包安装到本地仓库,供其他 maven 项目使用;
deploy :将最终的包复制到远程仓库,供其他开发人员或
maven 项目使用
site 生命周期
site 生命周期的目的是建立和发布项目站点, maven 能够基于
pom 文件所包含的项目信息,自动生成一个友好站点,方便
团队交流和发布项目信息。该生命周期中最重要的阶段如下:
site :生成项目站点文档;

4.2 maven生命周期相关命令

  • compile :编译
  • clean:清理
  • test:测试
  • package:打包
  • install:安装项目到本地仓库

.其他

5.1 编译插件

当我们点击 compile 编译的时候发现 maven 编译的时候使用的
插件是: maven-compiler-plugin:3.1:compile (default
compile) 。该插件默认编译的 jdk 版本是 1.5. 编译生成的 .class
文件,让 idea 中的 jdk1.8 运行, 1.8 jdk 运行 1.5 编译的 class
文件,会显示已过时字样。所以这里我们需要手动配置下 jdk
的编译版本,使用 jdk1.8
<!--插件管理-->
<build>
<plugins>
<!--编译插件:jdk1.8-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compilerplugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- put your configurations
here -->
<!--源码-->
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

5.2 测试插件

Maven test 指令运行测试代码存在中文乱码问题 , 用这个插件可以解决
<!--test插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>

5.3 更新依赖索引

有时候给 idea 配置完 maven 仓库信息后,在 idea 中依然搜索
不到仓库中的 jar 包。这是因为仓库中的 jar 包索引尚未更新到
idea 中。这个时候我们就需要更新 idea maven 的索引了,
具体做法如下:
打开设置 ---- 搜索 maven----Repositories---- 选中本地仓库 -----
点击 Update
OK了家人们,下次见bye

原文地址:https://blog.csdn.net/2201_75555400/article/details/142921601

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!