Maven初级(下)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Maven初级

Maven初级(中):https://developer.aliyun.com/article/1492447


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.jar
       compile   是    是     是                  90%的jar-默认的
         runtime   -          是            是                  mysql驱动(实现JDBC结构)
       provided  是         是            -                    servlet,jsp
       system   是          是            -
      2、依赖版本统一维护:
        定义版本信息:
         <properties>
                      <junit.version>4.12</junit.version>
                  </properties>
        引用版本信息:
         <version>${junit.version}</version>
    【3】插件管理:
        maven本身是一个插件库:默认的插件(版本低)
        自己配置插件,覆盖默认的插件: 编译插件,测试插件,tomcat7插件


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
存储 Java Apache
|
缓存 Java Maven
maven问题整理
maven问题整理
80 0
|
6月前
|
存储 Java 应用服务中间件
|
存储 Java 测试技术
新手Maven入门(二)
Maven 构建的生命周期是一个明确定义的用于构建和分发构件的过程。有 3 个内置的构建生命周期:clean、default 和 site。
89 0
|
XML 存储 Java
maven的入门使用
maven的入门使用
57 0
|
存储 XML Java
新手Maven入门(一)
Maven 是一种用来管理 Java 项目的工具,但不是那种用来管理资源规划和调度的工具。它处理的是管理一个具体的项目所涉及的各种任务,如编译、测试、打包、文档以及分发。
95 0
|
消息中间件 Dubbo Java
【项目管理工具】maven快速入土
【项目管理工具】maven快速入土
201 0
【项目管理工具】maven快速入土
|
Web App开发 Java Apache
maven入门(一)
现在基本上很多项目开始使用maven进行构建项目,已经不是直接在lib文件夹下统一放置jar包,所以还是有必要学习掌握下maven的。 针对maven。这篇文章主要介绍一下几点,大家如果都明白了,就可以参照这个思维导图,再复习下,毕竟知识长时间不用,会忘记的。
1253 0
|
Java 测试技术 Apache
Maven入门
1. Maven概念模型 图1.png 项目对象模型(Project Object Mobel) 通过pom.xml定义项目的坐标、项目依赖、项目信息、插件目标等。
1205 0
|
Java 大数据 测试技术