Maven初级

文章目录

    • 学习目标
    • 一、maven概述
      • 1.1、项目开发中的问题
      • 1.2、maven是什么
        • 1.2.1 maven定义
        • 1.2.2 mven的作用
    • 二、maven快速入门
      • 2.1、maven的下载与安装
      • 2.2、maven安装目录简介
      • 2.3、maven配置-MAVEN_HOME
        • 2.3.1 配置JAVA_HOME
        • 2.3.2配置MAVEN_HOME
      • 2.4、maven仓库介绍
        • 2.4.1、maven本地仓库配置
          • 2.4.1.1 本地仓库是什么
          • 2.4.1.2 配置本地仓库
        • 2.4.2、远程仓库
          • 2.4.2.1、中央仓库
          • 2.4.2.2、配置maven私服
            • 2.4.2.2.1 什么是私服
            • 2.4.2.2.2 配置私服
    • 三、maven工程
      • 1、IDEA配置本地maven
        • 1.1 配置本地maven
        • 1.2 配置maven参数
      • 2、创建maven的java工程
        • 2.1 创建步骤
        • 2.2 java工程目录简介
        • 2.3 运行java代码
    • 四、maven项目构建的生命周期(了解)
      • 1、maven项目构建的生命周期
        • 1.1 生命周期是什么
        • 1.2 maven的三套生命周期
          • clean生命周期
          • default生命周期
          • site生命周期
      • 2、maven生命周期相关命令
        • 2.1、mvn clean
        • 2.2、mvn compile
        • 2.3、mvn test
        • 2.4、 mvn package
        • 2.5、 mvn install
        • 2.6、mvn tomcat:run
      • 3、maven生命周期相关插件
        • 3.1 打开maven视图
        • 3.2 执行命令
    • 五、maven应用详解【重点】
      • 1、pom配置详解
      • 2、依赖管理【重点】
        • 2.1 Maven坐标
        • 2.2 依赖导入
          • 1、使用IDEA工具导入:
          • 2、从远程仓库中获取坐标:
            • **1.从私服中获取,联网的情况下可以使用阿里云私服,在教室使用局域网可以连接传智私服。**
            • 2.在中央仓库中查找:
      • 3、maven插件
        • 1问题演示
        • 2maven插件介绍
        • 3 编译插件 maven-compiler-plugin
        • 4 测试插件maven-surefire-plugin
    • 附一:完整的pom.xml配置
    • 附二:清理maven仓库
    • 附三:更新依赖索引
    • 附四:JDK插件
    • 小结


在这里插入图片描述

学习目标

  1. 能够了解Maven的作用
  2. 能够理解Maven仓库的作用
  3. 能够理解Maven的坐标概念
  4. 能够掌握Maven的安装
  5. 能够掌握IDEA配置本地Maven
  6. 能够使用IDEA创建javase的Maven工程
  7. 能够使用IDEA创建javaweb的Maven工程
  8. 能够自定义javaweb的Maven工程
  9. 能够掌握依赖引入的配置方式
  10. 能够了解依赖范围的概念

一、maven概述

1.1、项目开发中的问题

在这里插入图片描述

1、我的项目依赖一些jar包,我把他们放在哪里?直接拷贝到项目的lib文件夹中?如果我开发的第二个项目还是需要上面的那些jar包,再把它们复制到我当前项目lib中?那如果现在是第三次了,再复制一次吗?-----这样真的好吗?这样子操作会引起什么样的问题?以上操作会出现的问题:重复存放jar包;容易出现jar包冲突;手动拷贝jar包容易缺少一些jar包。解决方案:用maven来管理jar包 2、我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有5个项目组使用它了,今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组。
-----这样真的好吗?那如果有新的bug出现,还要改呢?
以上操作会出现的问题:需要开发人员每次都手动接收新的jar包并替换掉本地的jar包,麻烦。
解决方案:用maven来管理jar包

注意:在maven中所描述的依赖就是我们平常使用的第三方的jar包。

1.2、maven是什么

1.2.1 maven定义
	Maven是一个项目管理工具。它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。---《百度百科》maven:本质上是一个软件,用来管理项目的。																												   
1.2.2 mven的作用
  1. 项目构建管理: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。
  2. 管理依赖(jar包): maven能够帮我们统一管理项目开发中需要的jar包;
  3. 管理插件: maven能够帮我们统一管理项目开发过程中需要的插件;

二、maven快速入门

2.1、maven的下载与安装

下载

官方网站:http://maven.apache.org/
下载页面:http://maven.apache.org/download.cgi

在这里插入图片描述

注:本教程使用的是3.3.9版本的maven。

安装

​ maven安装包下载完成后是一个压缩文件

​ 我们需要将压缩包解压到一个没有中文,空格或其他特殊字符的文件夹内即可使用:

在这里插入图片描述

2.2、maven安装目录简介

在这里插入图片描述

目录名功能说明
bin二进制的可执行文件,如:mvn.cmd是maven的核心可执行文件
boot第三方类加载器插件,类似于ClassLoader
conf配置文件夹,其中的settings.xml是用于配置本地仓库的
libmaven自身运行所需要的jar包

2.3、maven配置-MAVEN_HOME

2.3.1 配置JAVA_HOME

​ 3版本的maven软件依赖1.7或以上版本的JDK,所以安装maven之前需要确认jdk的版本和JAVA_HOME是否正确配置:

在这里插入图片描述

注意:JAVA_HOME路径需要设置成bin目录的上一级目录

2.3.2配置MAVEN_HOME

​ 按照上面JAVA_HOME的配置方式,将maven的安装目录配置到环境变量中。MAVEN_HOME=maven压缩包解压目录,就是bin的上一级目录。

第一步:新增环境变量:MAVEN_HOME

在这里插入图片描述

第二步:在path环境变量中添加:%MAVEN_HOME%\bin

在这里插入图片描述

第三步:测试:在cmd控制台中输入命令: mvn -version ;如果出现以下maven的版本信息,则说明maven的安装与环境变量的配置均正确;

在这里插入图片描述

说明:出现如上信息说明maven安装和配置环境变量都成功。

2.4、maven仓库介绍

仓库就是一个目录(文件夹),这个目录被用来存储我们项目的所有依赖(就是jar包)和插件。

仓库包括两类仓库:

​ 1)本地仓库

​ 2)远程仓库

​ 远程仓库又包括两类:

​ a:中央仓库

​ b:私服

具体分类如下图所示:

在这里插入图片描述

2.4.1、maven本地仓库配置
2.4.1.1 本地仓库是什么

​ 本地仓库就是本地目录(文件夹),这个目录被用来存储我们项目的所有依赖(就是jar包),本地仓库供你电脑上所有项目使用,maven所有的jar包都是从远程仓库下载到本地仓库.

2.4.1.2 配置本地仓库

​ 本地仓库的位置是通过maven的核心配置文件(settings.xml)来配置的。settings.xml文件位于maven安装目录:apache-maven-3.3.9\conf\settings.xml 。

在这里插入图片描述

​ 打开settings.xml文件:

在这里插入图片描述

发现本地仓库默认的地址为当前用户的 /.m2/repository目录。

一般情况下,我们需要自己重新设置本地仓库的地址,设置方法如下:

  1. 第一步:在maven的安装目录下创建一个repository文件夹(一般习惯将仓库地址和maven安装目录放置在一起)。

在这里插入图片描述

  1. 第二步:在核心配置文件setting.xml中,将仓库存放的位置设置成:D:\MySoft\maven\apache-maven-3.3.9\repository(以自己的安装路径为准);

在这里插入图片描述

2.4.2、远程仓库

​ 远程仓库又包括两类:

​ a:中央仓库

​ b:私服

2.4.2.1、中央仓库

中央仓库默认是apache提供的,位于国外。(中央仓库的地址:http://mvnrepository.com/)

在这里插入图片描述

2.4.2.2、配置maven私服
2.4.2.2.1 什么是私服

​ 私服是可以架设在局域网的一种特殊的远程仓库,目的是代理中央仓库来部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库(中央仓库),将构件下载到私服,再提供给本地仓库下载。

我们现在使用的私服有两个:1)阿里云私服(连接外网) 2)传智私服(在教室里局域网)

我们到公司,公司都会有自己的私服。其实私服就是一个服务器。我们的maven项目到私服服务器上去下载jar包到本地仓库供maven项目使用。

在这里插入图片描述

2.4.2.2.2 配置私服

​ 打开settins.xml文件,找到标签节点,在这个标签中添加以下配置信息中的任意一个:

【传智局域网私服】–在教室使用

 <mirror><id>my</id><mirrorOf>*</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://192.168.50.187:8081/repository/maven-public/</url></mirror>

【阿里云私服】–连外网时使用

<mirror><id>nexus-aliyun</id><mirrorOf>*</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

在这里插入图片描述

注: 千万注意, 只可配置一个(另一个要注释!) 不然两个可能发生冲突 ,导致jar包下不下来 !!!


三、maven工程

在创建maven工程之前一定要保证上述的仓库都是配置成功了,否则无法创建maven项目,因为创建maven项目都要到仓库中去下载插件。那么上面我们已经配置好maven仓库了,接下来我们就要创建maven工程了。

1、IDEA配置本地maven

​ 因为idea和maven是没有直接关系的。所以使用idea创建maven工程之前需要将本地的maven配置到idea环境中,这样才可以在idea中创建maven工程。配置方法如下:

1.1 配置本地maven
  1. 第一步:关闭当前工程,回到idea主界面找到customize-----All settings:

在这里插入图片描述

​ 2.第二步:配置maven_home和settings.xml的路径:

在搜索框里搜索maven,然后按照下面操作即可。

在这里插入图片描述

1.2 配置maven参数

​ 使用idea创建maven项目后,默认会去网络中的中央仓库中下载一些配置资源,那么会很慢,这里需要设置下,那么就不会到中央仓库去下载了一些资源,而是到本地仓库下载。需要设置参数archetypeCatalog。设置方法如下:将-DarchetypeCatalog=internal 设置到Maven–Runner–VM Options中。

在这里插入图片描述

参数:-DarchetypeCatalog=internal

说明:

​ 1)-D:在maven中表示设置参数的意思

​ 2)archetypeCatalog:表示设置参数的名字

​ 3)internal:表示设置参数的值

2、创建maven的java工程

​ 使用maven创建的项目可分为3种类型:

1)普通maven项目,就是之前的javase项目–》java project,项目打成jar包运行

2)maven的web项目,项目打成war包运行

3)maven的pom项目,也称为maven的聚合项目(我们这里不讲解,后续maven高级课程讲解)

​ 本课程只涉及到普通的java项目和web项目的创建。

在这里插入图片描述

2.1 创建步骤
  1. 第一步:File–New–Project

在这里插入图片描述

  1. 第二步:选择maven然后下一步:

在这里插入图片描述

  1. 第三步:填写项目的坐标信息:

在这里插入图片描述

附:

GroupID是项目组织唯一的标识符, 比如我的项目组叫heima30  那么GroupID应该是 com.itheima.sh.heima30   域名.项目组名ArtifactID就是项目的唯一的标识符,表示项目名。 一般是 xxx-xxx   比如maven-java 
version:项目版本号 第一次就是1.0.0  第二次比较多的修改 2.0.0  第三次小的修改 2.1.0 第四次修改很小的bug2.1.1 ....
  1. 第四步:指定项目名称和路径:idea会把项目名中的- 去掉,我们给添加上即可。

在这里插入图片描述

在这里插入图片描述

2.2 java工程目录简介

在这里插入图片描述

说明:

​ 1).idea和maven-java1.iml只要在idea中创建工程都会存在的,idea生成的,不用关心

​ 2)pom.xml是maven的核心配置文件,我们会在这个配置文件配置依赖。下面会讲解

​ 3)main:主代码,在实际开发中是项目上线运行的

​ a:java:存放java代码的

​ b:resources:存放配置文件的,相当于以前创建的java工程中的src。例如存放mybatis、数据库连接池的配置文件。这个目录只能存放配置文件。

​ 4)test:存放测试的代码,项目上线之前先进行测试,然后在上线。

​ a:java:存放编写java的测试的代码,例如junit测试

2.3 运行java代码

1.在main目录的java目录上右键创建包

在这里插入图片描述

2.在创建好的包上右键创建java类

在这里插入图片描述

3.编写以下代码进行测试:

package com.itheima.sh.maven_helloworld_01;
public class HelloWorld {public static void main(String[] args) {System.out.println("hello maven..");}
}

运行程序:点击main方法左侧的绿色小三角,点击图标1 或者图标2 运行程序:

在这里插入图片描述

运行结果:如果控制台上能够正常打印如下信息,则说明工程创建没问题:

在这里插入图片描述


四、maven项目构建的生命周期(了解)

1、maven项目构建的生命周期

1.1 生命周期是什么

​ 在Maven出现之前,项目构建的生命周期就已经存在,软件开发人员每天都在对项目进行清理,编译,测试及部署。虽然大家都在不停地做构建工作,但公司和公司间,项目和项目间,往往使用不同的方式做类似的工作。

​ Maven的生命周期就是为了对所有的构建过程进行抽象和统一。Maven从大量项目和构建工具中学习和反思,然后总结了一套高度完美的,易扩展的生命周期。这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤。

​ Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,在Maven的设计中,实际任务(如源代码编译)都交由插件来完成。

1.2 maven的三套生命周期

​ maven拥有三套相互独立的生命周期,分别是clean,default和site。clean 生命周期的目的是清理项目default 生命周期的作用是构建项目site 生命周期的目的是构建项目站点

在这里插入图片描述

maven的生命周期都对应着具体的命令如下:

clean生命周期

​ clean生命周期的目的是清理项目,它包含三个阶段:

  1. pre-clean 执行一些清理前需要完成的工作;
  2. clean 清理上一次构建生成的文件;
  3. post-clean 执行一些清理后需要完成的工作;
default生命周期

​ default生命周期定义了真正构建项目需要执行的所有步骤,它是所有生命周期中最核心的部分。其中的重要阶段如下:

  1. compile :编译项目的源码,一般来说编译的是src/main/java目录下的java文件至项目输出的主classpath目录中;
  2. test :使用单元测试框架运行测试,测试代码不会被打包或部署;
  3. package :接收编译好的代码,打包成可以发布的格式,如jar和war;
  4. install: 将包安装到本地仓库,供其他maven项目使用;
  5. deploy :将最终的包复制到远程仓库,供其他开发人员或maven项目使用;
site生命周期

​ site生命周期的目的是建立和发布项目站点,maven能够基于pom文件所包含的项目信息,自动生成一个友好站点,方便团队交流和发布项目信息。该生命周期中最重要的阶段如下:

  1. site :生成项目站点文档;

2、maven生命周期相关命令

​ 我们使用以下命令可以完成maven生命周期,演示生命周期的命令必须在pom.xml所在的目录下打开dos窗口然后输入如下命令进行演示。

1.找到pom.xml文件位置

在这里插入图片描述

2.在pom.xml文件位置输入cmd打开dos窗口

在这里插入图片描述

mvn clean:调用clean生命周期的clean阶段,清理上一次构建项目生成的文件;
mvn compile :编译src/main/java中的java代码;
mvn test :编译并运行了test中内容 ;
mvn package:将项目打包成可发布的文件,如jar或者war包; 
mvn install :发布项目到本地仓库 ;
2.1、mvn clean

​ clean命令的作用是清理项目编译或打包后生成的文件,具体对应maven项目中的target目录;

需求:清理存储上一次构建项目生成的文件target.

未清理前:

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

清理之后:

在这里插入图片描述

我们发现不存在target目录了。

2.2、mvn compile

​ compile命令的作用是编译src/main/java中的java代码编译成可直接运行的class文件。编译完成后maven项目会自动创建一个target目录来存储这些文件。

在这里插入图片描述

在这里插入图片描述

2.3、mvn test

​ test命令的作用是编译并运行maven项目的src/test目录下的junit测试代码。注意:只能运行junit测试代码。 并且使用test运行的测试类的类名必须以Test结尾,否则不会运行,不会看到结果。

在test/java目录下创建一个测试类,书写测试方法,代码如下:

package com.itheima.sh.maven_test_01;
import org.junit.Test;
public class MavenTest {@Testpublic void show() {System.out.println("show....");}
}

在dos窗口输入的测试命令:

mvn test

在这里插入图片描述

编译后生成的文件:

在这里插入图片描述

运行日志:

在这里插入图片描述

注意:

​ 1.test命令只能运行test目录下的junit包下的类

​ 2.test命令也可以运行多个测试方法:

package com.itheima.sh.maven_test_01;import org.junit.Test;public class MavenTest {@Testpublic void show() {System.out.println("show............");}@Testpublic void show1() {System.out.println("show1............");}@Testpublic void show2() {System.out.println("show2............");}
}

在这里插入图片描述

2.4、 mvn package

​ package命令是将项目打包成可以发布的包。maven项目常见的打包方式有两种:

​ 1)maven的java project会打成jar包。

​ 2)maven的web project会打成war包。

打包完成后将生成的文件存放在target目录中。

命令使用格式:

mvn package

在这里插入图片描述

注意:每次打包前还会再次执行所有test命令

在这里插入图片描述

2.5、 mvn install

​ install命令是将当前的项目打包并发布到本地仓库中,供本地的其他maven项目使用。项目发布的路径:本地仓库路径/groupId/artifactId/

在这里插入图片描述

注意:每次安装前还会再次执行所有test命令

2.6、mvn tomcat:run

tomcat:run表示部署项目,项目上线运行。能够部署项目都是web项目。我们这里演示部署web项目。这里启动tomcat并不是使用idea中的tomcat,而是maven自带的。所以我们部署好项目之后发现idea中的tomcat并没有启动。

在这里插入图片描述

停止服务器:

在这里插入图片描述

无法访问服务器了:

在这里插入图片描述

注意:使用maven在命令行中部署项目,一定要停止idea中的tomcat。否则,在命令行中不会启动成功tomcat。

3、maven生命周期相关插件

​ maven的核心包只有几兆大小,核心包中仅仅定义了抽象的生命周期。生命周期的各个阶段都是由插件完成的,它会在需要的时候下载并使用插件,例如我们在执行mvn compile命令时实际是在调用maven的compile插件来编译java源码:

在这里插入图片描述

​ 我们使用IDEA创建maven项目后,就不需要再手动输入maven的命令来构建maven的生命周期了。IDEA给每个maven构建项目生命周期各个阶段都提供了图形化界面的操作方式。具体操作如下:

3.1 打开maven视图

​ 依次打开:View–》Tool Windows–》Maven Projects

在这里插入图片描述

打开IDEA编辑区右侧:Maven Projects会弹出如下窗口,打开窗口中的Lifecycle即可看到相关命令。

在这里插入图片描述

3.2 执行命令

​ 双击Lifecycle下的相关命令图标即可执行对应的命令。或者点击运行按钮:

在这里插入图片描述


五、maven应用详解【重点】

​ maven是一个项目管理工具,其中依靠于一个很重要的xml文件:pom.xml。我们接下来学习下pom.xml文件的配置。

1、pom配置详解

​ pom(Project Object Model)指的是项目对象模型,用来描述当前的maven项目。使用pom.xml文件来实现。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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><groupId>com.heima.maven</groupId><artifactId>maven-web2</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging>
</project>

【pom文件详解】

1. <project> :pom文件的根标签,表示当前maven项目;
2. <modelVersion>: 声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,目前POM模型版本是4.0.0;
3. 坐标:定位项目在本地仓库中的位置,下面三个标签组成一个坐标。1)<groupId>:maven项目组织id标识符,一般是公司域名倒过来写<groupId>com.heima.maven</groupId>2)<artifactId>:项目的标识符--项目名。<artifactId>maven-web2</artifactId>3) <version>:项目的版本号;<version>1.0-SNAPSHOT</version>
4. <packaging>:maven项目的打包方式一般配置jar或者war;

2、依赖管理【重点】

Maven的作用:1.构建项目(maven项目在任何一个开发工具中结构都是一样的)及项目的生命周期;2.依赖管理;3.插件管理;

Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。为了能自动化的解析任何一个Java构件,Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们之前说的坐标。包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能在其它项目中进行依赖引用。

2.1 Maven坐标

坐标的定义元素如下:

  1. groupId:定义当前项目(jar包)隶属的实际项目组。
  2. artifactId:定义当前项目(jar包)的名称;
  3. version:定义当前项目(jar包)的版本号;

通过上面三个参数我们就能够确定一个唯一版本号的jar包。

<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.1.2.RELEASE</version>
</dependency>
2.2 依赖导入
1、使用IDEA工具导入:

​ IDEA中给我们提供了一种搜索jar包的方式,帮助我们快速导入jar包。使用方法如下:

  1. 第一步:在pom.xml文件中书写dependencies标签,鼠标光标移入到dependencies标签中,按Alt+Insert键。会弹出一个选择框:

    在这里插入图片描述

  2. 选择Dependency后会弹出一个搜索框:输入要添加的jar包的名字

    在这里插入图片描述

​ 选择需要的jar包后按回车键即可自动添加此依赖;

在这里插入图片描述

注意:在idea中还可以直接输入要使用的包。

在这里插入图片描述

2、从远程仓库中获取坐标:

​ 如果我们导入的依赖本地仓库中没有,使用IDEA搜索就搜索不到了,我们需要从网络中查找这个依赖的坐标,然后将其添加到pom文件中。添加完成之后,maven会帮我们从私服或中央仓库中下载该依赖。

​ 搜索依赖坐标的方法:

1.从私服中获取,联网的情况下可以使用阿里云私服,在教室使用局域网可以连接传智私服。

​ 阿里云私服地址:

http://maven.aliyun.com/nexus/content/groups/public

​ 传智局域网私服地址:

http://192.168.50.22:8081/nexus/content/groups/public/

1).这里访问阿里云私服

在这里插入图片描述

阿里云首页:

https://maven.aliyun.com

在这里插入图片描述

2).复制上述的依赖到pom.xml文件中。

在这里插入图片描述

如果私服中也没有找到那么就只能到中央仓库中查找了。

2.在中央仓库中查找:

网址:

http://mvnrepository.com/

在这里插入图片描述

​ 将以下坐标复制到pom文件中即可:

在这里插入图片描述

​ pom文件中引入依赖后,会去私服或者中央仓库中下载依赖:如果项目结构的External Librarites中出现刚引入的依赖,则说明依赖引入成功。

在这里插入图片描述

3、maven插件

1问题演示

我们在运行javase项目的时候,发现控制台会显示一些1.5已过时的警告。

在这里插入图片描述

说明:

当我们点击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.

我们这里需要配置maven的插件。

2maven插件介绍

​ 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成。例如编译源代码是由maven-compiler-plugin完成的,但是这些插件都是maven默认的插件,如果需要配置自己的插件,则需要通过插件的坐标来引入插件。插件的坐标可以从maven官方提供的插件列表进行下载:

Maven官方有两个插件列表:

第一个列表的GroupId为org.apache.maven.plugins,这里的插件最为成熟,具体地址为:http://maven.apache.org/plugins/index.html第二个列表的GroupId为org.codehaus.mojo,这里的插件没有那么核心,但也有不少十分有用,其地址为:http://mojo.codehaus.org/plugins.html

1.访问网址,找到maven插件,然后点击编译compiler

在这里插入图片描述

2.点击用量信息页

在这里插入图片描述

3.复制插件

在这里插入图片描述

4.将上述复制的内容放到build标签里面

<!--插件管理--><build><plugins><!--编译插件:jdk1.8--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><!-- put your configurations here --><!--源码--><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>

5.清除target编译和运行

在这里插入图片描述

使用的编译插件是我们自己配置的版本。

直接运行java代码就不会出现警告信息了。jdk的编译和运行版本统一了。

3 编译插件 maven-compiler-plugin
			<!--JDK编译插件--><!--编译插件:jdk1.8--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><!-- put your configurations here --><!--源码--><source>1.8</source><target>1.8</target></configuration></plugin>

说明:插件都要放在 plugins标签里面。

4 测试插件maven-surefire-plugin

在这里插入图片描述

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>

附一:完整的pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<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><groupId>com.baidu</groupId><artifactId>maven-usermanager</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><!--依赖管理:1、导入依赖:idea导入私服搜索坐标2、依赖范围设置3、依赖版本统一维护插件管理:1、编译插件--><!--依赖版本统一管理--><properties><junit.version>4.13</junit.version><servlet.version>3.0.1</servlet.version><jsp.version>2.3.3</jsp.version><beanutils.version>1.8.3</beanutils.version><commons.logging.version>1.1.1</commons.logging.version><jstl.version>1.2</jstl.version><log4j.version>1.2.17</log4j.version><mabatis.version>3.5.0</mabatis.version><mysql.version>5.1.18</mysql.version></properties><!--依赖管理:--><dependencies><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><!--<version>4.13</version>--><version>${junit.version}</version><!--范围:测试存在--><!--<scope>test</scope>--></dependency><!--servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet.version}</version><!--编译 测试需要,运行时不需要--><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>${jsp.version}</version><scope>provided</scope></dependency><!--commons-beanutils--><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>${beanutils.version}</version></dependency><!--commons-logging--><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>${commons.logging.version}</version></dependency><!--jstl--><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mabatis.version}</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version><!--编译不需要。测试和运行需要--><scope>runtime</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency></dependencies><!--插件管理--><build><plugins><!--JDK编译插件--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><!-- put your configurations here --><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>80</port><path>/</path></configuration></plugin></plugins></build>
</project>

附二:清理maven仓库

​ 初始情况下,我们的本地仓库是没有任何jar包的,此时会从私服去下载(如果没有配置,就直接从中央仓库去下载),可能由于网络的原因,jar包下载不完全,这些不完整的jar包都是以lastUpdated结尾。此时,maven不会再重新帮你下载,需要你删除这些以lastUpdated结尾的文件。如果本地仓库中有很多这样的以lastUpadted结尾的文件,可以执行如下脚本来删除:

在这里插入图片描述

在上面的bat文件上右键—》编辑 。修改文件:

在这里插入图片描述

修改完毕后,双击运行即可删除maven仓库中的残留文件。

附三:更新依赖索引

​ 有时候给idea配置完maven仓库信息后,在idea中依然搜索不到仓库中的jar包。这是因为仓库中的jar包索引尚未更新到idea中。这个时候我们就需要更新idea中maven的索引了,具体做法如下:

打开设置----搜索maven----Repositories----选中本地仓库-----点击Update

在这里插入图片描述

附四:JDK插件

<!--配置maven的插件-->
<build><plugins><!--配置的是jdk编译器--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><!-- put your configurations here --><source>1.8</source><target>1.8</target></configuration></plugin></plugins>
</build>

小结

第一章、Maven概述1、maven是什么:软件-项目管理工具;2、maven的作用:【1】构建标准的项目:java,web【2】管理项目的生命周期:【3】maven管理项目中的jar包(依赖);【4】maven管理插件;3、maven的下载安装与配置:【1】JAVA_HOME配置正确;【2】MAVEN_HOME配置正确;   mvn -v第二章、maven仓库【1】作用:存放jar包和插件;【2】分类:本地仓库:本地的一个文件夹远程仓库:远程服务器上的一个文件夹中央仓库:apache维护的仓库私服:自己搭建的远程仓库【3】仓库配置:本地仓库配置:私服配置:阿里云(外网),传智私服(局域网)第三章、Maven项目创建-------重点【1】把maven绑定到IDEA中:file->other settings-->default setting 设置maven环境:maven_home,settings.xml【2】使用IDEA创建maven项目:掌握创建maven的java项目:普通项目  打包方式为jar项目结构创建maven的web项目: 打包方式为war项目结构【3】maven项目的生命周期:1、clean:删除项目构建过程中生成的文件(target)2、default:创建==》编译==》测试==》打包===》安装==》部署上线3、site:了解【4】生命周期相关命令:命令调用maven的插件执行任务mvn clean:清理mvn compile:编译mvn  test:测试mvn package:打包mvn install:安装第四章、maven应用详解 ---------重点【1】依赖管理:1、坐标:定位一个jar包在本地仓库中的位置<dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>2、导入依赖:导入坐标本地仓库导入: Alt+Insert远程仓库搜索:中央仓库,私服搜索【2】依赖配置:1、依赖作用范围配置:maven有3套运行环境编译环境    测试环境    运行环境(tomcat)test      -           是          -                   junit.jarcompile   是		是			是                  90%的jar-默认的runtime   -          是            是                  mysql驱动(实现JDBC结构)provided  是         是            -                    servlet,jspsystem   是          是            -2、依赖版本统一维护:定义版本信息:<properties><junit.version>4.12</junit.version></properties>引用版本信息:<version>${junit.version}</version>【3】插件管理:maven本身是一个插件库:默认的插件(版本低)自己配置插件,覆盖默认的插件: 编译插件,测试插件,tomcat7插件


在这里插入图片描述



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/284177.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言进阶篇】动态内存管理

【C语言进阶篇】动态内存管理 &#x1f308;个人主页&#xff1a;开敲 &#x1f525;所属专栏&#xff1a;C语言 &#x1f33c;文章目录&#x1f33c; 1. 为什么要有动态内存分配 2.动态内存开辟和释放函数 2.1 动态内存释放函数 2.1.1 free函数 2.2 动态内存开辟函数 2.2.1 …

C/C++之内存旋律:星辰大海的指挥家

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 一、C/C内存分布 我们先来了解一下C/C内存分配的几个区域&#xff0c;以下面的代码为例来看…

mac 安装 nvm 【真解决问题】

前提 没有node环境已有git 下载 我用的gitee极速下载 git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev0 --tags配置 1. 配置变量 在用户的目录下新增文件 .zshrc export NVM_DIR"$HOME/…

ctfshow-web入门-反序列化

web254 先看题 <?php/* # -*- coding: utf-8 -*- # Author: h1xa # Date: 2020-12-02 17:44:47 # Last Modified by: h1xa # Last Modified time: 2020-12-02 19:29:02 # email: h1xactfer.com # link: https://ctfer.com*/error_reporting(0); highlight_file(__FIL…

vue 修改element-plus主题色

一、安装SCSS npm install sass --save-dev npm install sass-loader --save-dev npm install node-sass --save-dev npm install vue-style-loader --sava-dev 二、添加主题文件theme.scss forward "element-plus/theme-chalk/src/common/var.scss" with ($col…

基于springboot+vue的宠物商城网站

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

RabbitMq高可用

消息队列高级 服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.2.消息持久化1.3.消费者消息确认1.4.消费失败重试机制1.5.总结 2.死信交换机2.1.初识死信交换机2.2.TTL2.3.延迟队列 3.惰性队列3.1.消息堆积问题3.2.惰性队列 4.MQ集群4.1.集群分类4.2.普通集群4.3.镜像集群…

【Swagger】接口文档生成

文章目录 一、前后端分离开发流程二、YApi导入接口文档三、Swagger3.1 介绍3.2 使用步骤3.2.1 导入 knife4j 的maven依赖3.2.2 在配置类中加入 knife4j 相关配置3.2.3 配置类中设置静态资源映射3.2.4 访问测试 3.3 常用注解3.4 全局参数设置 四、YApi 与 Swagger 一、前后端分离…

AGV|机器人导航识别二维码视觉传感器TDCS-0100与上位机PLC联机实例说明

目前二维码视觉导航的AGV出货量非常大&#xff0c;几乎都是仓储型AGV使用的导航方式。在地面或者天花板等位置标贴二维码作为标记点&#xff0c;通过扫描读取二维码信息和二维码相对相机的角度来确定当前位置。 本文重点介绍AGV|机器人导航识别二维码视觉传感器TDCS-0100与上位…

查看文件信息:ls,pwd,操作文件:cd,touch,mkdir,rmdir,rm,cp,mv

目录 ls 选项 -l -a 隐藏文件存在的意义 -F -d -R pwd cd 选项 ​编辑 touch 选项 mkdir 选项 -p rmdir 选项 -p rm 选项 cp 选项 -r -R (和-r的区别) mv 移动目录 改名 选项 rm改为mv ls 显示当前目录下的文件 选项 (可以合并使用,有的也可以写…

亚马逊云科技《生成式 AI 精英速成计划》

最近亚马逊云科技推出了「生成式AI精英速成计划」&#xff0c;获取包含&#xff1a;免费学习热门生成式AI课程、技能证书、人力主管的面试辅导、云计算国际认证、免费去往北美参加全球用户大会等&#xff5e; 针对开发者和企业非技术专业人士&#xff0c;了解如何使用大模型平台…

测试平台——前端框架

一、创建vue项目 npm init vitelatest web_class wylWYLdeMacBook-Air testplatform % npm init vitelatest web_class ✔ Select a framework: › Vue ✔ Select a variant: › JavaScriptScaffolding project in /Users/wyl/workspace/testplatform/web_class...Done. Now…

软考高级:CS 和 BS 架构

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

使用POI以OLE对象的形式向excel中插入附件(pdf为例)

前言&#xff1a; 最近在使用easyExcel操作excel文件时&#xff0c;一直想找到一个方法可以往excel中填充附件&#xff0c;但是目前只发现POI可以插入附件&#xff0c;于是将方法记录如下&#xff1a; 实现&#xff1a; 这个方法主要是使用 Apache POI 的 HSSFWorkbook 类来…

极简自建web视频会议,私有云,rtmp/rtsp/webrtc一键参会直播会议互动方案

随着视频互动深入工作日常&#xff0c;很多客户需要自建一个会议&#xff0c;监控的交互平台&#xff0c;目前外面不管是开源还是非开源的平台&#xff0c;都是极为复杂&#xff0c;一般linux安装库关联部署复杂&#xff0c;非技术人员根本没办法使用&#xff0c;不方便集成部署…

C# WPF编程-控件

C# WPF编程-控件 概述WPF控件类别包括以下控件&#xff1a;背景画刷和前景画刷字体文本装饰和排版字体继承字体替换字体嵌入文本格式化模式鼠标光标 内容控件Label&#xff08;标签&#xff09;Button&#xff08;按钮&#xff09; 概述 在WPF领域&#xff0c;控件通常被描述为…

牛客题霸-SQL篇(刷题记录二)

本文基于前段时间学习总结的 MySQL 相关的查询语法&#xff0c;在牛客网找了相应的 MySQL 题目进行练习&#xff0c;以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多&#xff0c;因此本文不再展示&#xff0c;只提供 MySQL 代码与示例输出。 以下内容是…

stm32平衡车

目录 一.所需材料 二.PID算法&#xff08;简单说明&#xff09; 直立环 速度环 串级PID 三.使用到的外设 1.定时器输出比较-PWM 2.定时器编码器模式 3.编码器读取速度 4.电机驱动函数 5.外部中断 四、小车 调试 一.所需材料 1.陀螺仪MPU6050--读取三轴的加速度…

[BT]BUUCTF刷题第4天(3.22)

第4天&#xff08;共3题&#xff09; Web [极客大挑战 2019]Upload 这是文件上传的题目&#xff0c;有一篇比较详细的有关文件上传的绕过方法文件上传漏洞详解&#xff08;CTF篇&#xff09; 首先直接上传带一句话木马的php文件&#xff0c;发现被拦截&#xff0c;提示不是图…

【SysBench】OLTP 基准测试示例

前言 本文采用 MySQL 沙盒实例作为测试目标&#xff0c;使用 sysbench-1.20 对其做 OLTP 基准测试。 有关 MySQL 沙盒的更多信息&#xff0c;请参阅 玩转 MySQL Shell 沙盒实例&#xff0c;【MySQL Shell】6.8 AdminAPI MySQL 沙盒 。 1、部署一个 MySQL 沙盒实例 使用 mysq…