0
点赞
收藏
分享

微信扫一扫

Maven从入门到高级

其生 2022-01-12 阅读 88
mavenjavajar


今日内容:

  1. Maven概述(理解)
  2. Maven环境配置(掌握)
  3. Maven仓库介绍(理解)
  4. Maven项目搭建(掌握)
  5. Maven依赖管理(掌握)
  6. Maven的生命周期(理解)

一.Maven简介

1.1 什么是Maven

翻译为“专家”,“内行”

Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

  • 什么是项目构建?

项目构建就是从创建项目开始,到最后项目部署整个流程。

如下图:
在这里插入图片描述

  1. 清理: 把项目中之前运行生成的classes删除掉
  2. 编译: 把项目中的java文件编译class文件
  3. 测试: 运行我们的程序,看有没有问题
  4. 报告: 测试完成以后,生成一个测试报告,描述项目中功能的执行情况
  5. 打包: 将项目打成一个压缩包(jar包或者war包)
  6. 部署: 将打包的文件放在web服务器去运行.
  • 什么是依赖?为什么要进行依赖管理?

自动下载,统一依赖管理,主要管理jar包

依赖简单理解: 开发项目所需的jar包。

早期开发时,项目需要第三方的依赖,需要在项目中导入第三方依赖的jar包

缺点:

  1. 如果项目中依赖的jar包比较多,最终造成项目非常庞大.
  2. 如果项目中依赖的jar包,比如: A.jar包, A.jar依赖与其他jar包,导入A.jar包,可能会导入很多依赖jar包
  • 什么是项目信息?

项目名称描述等,开发人员信息,开发者信息等

1.2 为什么使用Maven

(1)IDE(比如:Eclipse)开发工具

  • 手工操作较多,编译、测试、部署等工作都是独立的,很难一步完成

  • 每个人的IDE配置都不同,很容易出现本地代码换个地方编译就出错

(2)Maven的特点:

  • 拥有约定,知道你的代码在哪里,放到哪里去

  • 拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程

  • 只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情

  • 主要特点: 拥有依赖管理,管理项目所需的jar包(jar包,统一在仓库管理)

总结:Maven在进行项目构建和依赖管理(主要是管理jar)简单快捷,所以在开发中主要使用Maven进行项目管理。

1.3 总结Maven的作用

Maven的作用我们可以分成三类:

(1)项目构建:提供标准的,跨平台的自动化构建项目的方式

(2)依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突等问题

(3)统一开发结构:提供标准的,统一的项目开发结构,如下图所示:

在这里插入图片描述

各目录存放资源类型说明:

src/main/java:项目java源码

src/main/resources:项目的相关配置文件(比如mybatis配置,xml映射配置,自定义配置文件等)

src/main/webapp:web资源(比如html,css,js等)

src/test/java:测试代码

src/test/resources:测试相关配置文件

src/pom.xml:项目pom文件(主要用于项目依赖的jar包管理)

二.Maven环境搭建

maven的官网:http://maven.apache.org/

2.1 下载

官方下载地址:http://maven.apache.org/download.cgi

在这里插入图片描述

在今日课程资料安装程序中给大家提供了已经下载好的包,我们可以直接使用

2.2 安装

maven是一个绿色软件,解压即安装,非常容易,

我们找到今日课程资料中的安装程序,将里面的apache-maven-3.6.1-bin.zip直接解压到D盘根目录下即可

解压完成后我们可以查看一下maven自己的一个目录结构如下

在这里插入图片描述

各目录结构说明:

bin(binary):可执行程序目录,

boot:maven自身的启动加载器

conf(configuration):maven配置文件的存放目录,(setttings.xml)

lib(library):maven运行所需库的存放目录

2.3 环境配置

maven的运行需要java的环境,需要我们配置JAVA_HOME环境变量,这个相信大家已经存在了

下面在去配置MAVEN_HOME的环境变量

1:我的电脑-------->属性--------->高级系统设置---------->新建系统变量MAVEN_HOME

在这里插入图片描述

系统变量值就是maven软件的根目录,我们刚刚已经将maven解压到D盘了,因此变量值就如图中所示

2:环境变量配置好之后需要测试环境配置结果,我们需要在DOS命令窗口下输入以下命令查看输出

mvn -v

在这里插入图片描述

如果能够看到输出的maven的版本信息代表配置成功

2.4 Maven关联本地仓库(存放和管理jar的一个目录)

注意:找到Maven的conf目录的setttings.xml

  <localRepository>自己仓库的带盘符绝对路径</localRepository>

三.Maven基础概念

3.1 仓库

仓库:用于存储和管理资源(包含jar包和插件),主要是各种jar包

在这里插入图片描述

关于仓库,我们前面讲到了有三种:本地仓库,私服,中央仓库,其中私服和中央仓库都属于远程仓库

中央仓库:maven团队自身维护的仓库,属于开源的

私服:各公司/部门等小范围内存储资源的仓库,私服也可以从中央仓库获取资源

本地仓库:开发者自己电脑上存储资源的仓库,也可从远程仓库获取资源

私服的作用:

(1)保存具有版权的资源,包含购买或自主研发的jar

(2)一定范围内共享资源,能做到仅对内不对外开放

3.2 坐标

我们说maven的仓库里存储了各种各样的资源(jar包),那这些资源我们如何找到它们呢?我们需要知道它们具体的一个位置才能知道如何找到它们,这个就叫坐标

坐标:maven中的坐标用于描述仓库中资源的位置

https://repo1.maven.org/maven2/

那maven中的坐标是如何构成的呢?

maven坐标的主要组成如下:

groupId:定义当前资源隶属组织名称(通常是域名反写,如:org.mybatis;com.itheima)

artifactId:定义当前资源的名称(通常是项目或模块名称,如:crm,sms)

version:定义当前资源的版本号

scope: 定义依赖范围(取值一共五种,常见的有4种,比如 compile, provided, test,runtime)

如果要查询maven某一个资源的坐标,我们通常可以去maven的仓库进行查询,

https://mvnrepository.com/,在该网站中可直接搜索想要的资源,然后就能得到该资源的坐标

输入资源名称进行检索

在这里插入图片描述

点击你想要的资源进行查看

在这里插入图片描述

选择版本查看坐标
在这里插入图片描述

maven坐标的作用:

使用唯一标识,唯一性定义资源位置,通过该标识可以将资源的识别与下载工作交由机器完成。

3.3 仓库配置

开发者要在自己电脑上做开发,首先要做的就是配置本地仓库

默认情况下maven本地仓库的位置在哪儿呢?

我们可以选择在全局进行配置,在maven的配置文件conf/settings.xml中可以找到它的说明

  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

也就是在系统盘当前用户目录下的.m2/repository,比如我当前的系统用户是zs,则默认的本地仓库仓库位置在C:\Users\zs\.m2\repository

因为我们平时开发项目所有的资源会比较多,而且各种资源还有好多的版本,资源与资源之间还有相互依赖的这种情况,因此本地仓库保存的内容会非常的多,它的体积会很大,如果放在C盘下不太合适,因此我们可以自己来指定一个位置作为本地仓库的位置,这个指定同样是需要来修改maven的配置文件conf/settings.xml

在我们前面查看这个文件的时候大家会发现它提供了一个标签<localRepository>/path/to/local/repo</localRepository>

这个标签中配置的值就是我们本地仓库的位置,但是这个标签是在注释中的,也就是说目前不起作用,因此我们要将该标签挪出注释,并修改标签内的值,指定一个新的位置作为本地仓库的位置,例如

  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
<localRepository>D:\maven-repository</localRepository>

如果是局部用户配置:在仓库的同级目录也可以包含一个settings.xml配置文件,在里面也可以进行指定

注意:局部用户配置优先与全局配置(遇见相同配置项的时候)

另外大家需要注意:maven默认连接的远程仓库位置是:(即中央仓库)

在这里插入图片描述

此站点并不在国内,因此有时候下载速度非常慢,因此我们可以配置一个国内站点镜像,可用于加速下载资源

我们在conf/settings.xml配置文件中找到<mirrors>标签,在这组标签下添加镜像的配置,如下

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

当然也可以多配置几个

   <mirror>
        <id>jboss-public-repository-group</id>
        <mirrorOf>central</mirrorOf>
        <name>JBoss Public Repository Group</name>
        <url>http://repository.jboss.org/nexus/content/groups/public</url>
    </mirror>
    <mirror>
            <id>ibiblio</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repository.jboss.org/nexus/content/groups/public/</url>
    </mirror>
	<mirror>    
          <id>JBossJBPM</id>   
        <mirrorOf>central</mirrorOf>   
        <name>JBossJBPM Repository</name>   
        <url>https://repository.jboss.org/nexus/content/repositories/releases/</url>  
	</mirror> 

3.4 总结

• groupId:定义当前Maven项目隶属项目。命令规则: 公司域名的倒序,比如 cn.itheima.项目名称

• artifactId:定义实际项目中的一个模块,命令规则: 项目名称,比如 项目名称_公司名称

• version:定义当前项目的当前版本

• packaging:定义该项目的打包方式

• scope: 规定jar包作用范围,有四个值

Maven为什么使用坐标?

• Maven世界拥有大量jar包以及插件等构建,我们需要找一个用来唯一标识一个构建的统一规范

• 拥有了统一规范,就可以把查找工作交给机器

四.Maven项目搭建

我们回顾一下maven规范的目录结构:
在这里插入图片描述

4.1 通过Maven命令搭建maven项目

  • maven命令构建java工程

    mvn archetype:generate -DgroupId=cn.itcast.maven.quickstart -DartifactId=simple -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeCatalog=internal

  • maven命令构建web工程

    mvn archetype:generate -DgroupId=cn.itcast.maven.quickstart -DartifactId=simpleWeb -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeCatalog=internal

  • 操作步骤:

    1. 在某个盘符下面创建一个目录: 比如 ,在D盘下面创建一个目录:mvnproject/project-java,project_web

    2. 打开cmd命令行窗口:

      • 切换进入project-java目录: 输入maven命令构建java工程
      • 切换进入project_web目录: 输入maven命令构建web工程
  • 注意:要执行下面的命令时,需要在切换到maven项目里面执行。

4.2 Maven常用命令

  • mvn clean 用于清理我们的项目,将之前编译好的class文件全部都给干掉

  • mvn compile 用于编译我们的项目,将我们所有的Java文件编译成class文件

  • mvn package 用于将我们的项目打包成jar或者war包

  • mvn install 用于将我们的项目安装到我们本地的仓库中

4.3 下面我们来进行命令演示:

(1)在项目project-java所在的DOS命令窗口下执行mvn compile进行源码编译,当然首次执行需要先下载相关插件

在这里插入图片描述

编辑结果如下:

在这里插入图片描述

编译完成后在项目project-java下多了一个目录target,在这个目录下就存放的是maven编译好的一些东西

在这里插入图片描述

我们可以进入到target目录查看
在这里插入图片描述

其中生成的classes目录就是编译好的字节码文件

(2)当然如果我们想清理掉这些东西,我们只需执行mvn clean命令即可,清理掉后target目录也就消失了

(3)如果我们要执行测试包中的测试程序,我们只需执行mvn test命令即可
在这里插入图片描述

此时在看target目录会多一些东西
在这里插入图片描述

其中产生的test-classes就是测试代码的字节码文件,surefire-reports是它产生的测试报告

(4)使用mvn package命令进行打包,如下

在这里插入图片描述

在生成的target目录中可以看到打包的结果

在这里插入图片描述

当然,如果仔细看DOS窗口输出的我们会发现,mvn package命令的时候maven会把前面两个命令mvn compile,mvn test都执行一遍

(5)使用mvn install命令进行安装,将项目打好的包存入本地仓库

在这里插入图片描述

此时我们可以去本地仓库中查找,如何查找?这个很重要

maven是按照groupId/artifactId/version的结构在本地仓库进行存储和查找的

4.4 IDEA工具搭建maven项目

前面学习的基本都是通过命令来构建和管理项目,但是这在实际开发过程中基本不常用,常用的是通过相关IDE工具来进行项目的构建和管理,因此我们使用IDEA工具进行maven项目的搭建

需要注意的是:Maven和IDEA在版本上存在一些兼容性问题,因为要合理的选择Maven和IDEA的版本,本课程中提供安装maven-3.6.1版本是可用的

注意:在使用骨架创建maven项目时,为了避免重复下载骨架,在下面选项的Runer–> -DarchetypeCatalog=internal

4.4.1 不使用骨架创建项目

(1)在IDEA中配置Maven

在这里插入图片描述

(2)创建maven工程
在这里插入图片描述

(3)填写本项目的坐标

在这里插入图片描述

(4)查看各目录颜色标记是否正确
在这里插入图片描述

(5)IDEA右侧有一个maven管理界面,可点开查看

在这里插入图片描述

(6)在项目的pom.xml文件中添加项目资源依赖

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

(7)创建源代码:com.tedu.Demo

package com.tedu;

/**
 * Created by 传智播客*黑马程序员.
 */
public class Demo{
    public String say(String name){
        System.out.println("hello "+name);
        return "hello "+name;
    }
}

(8)创建测试代码:com.tedu.DemoTest

package com.tedu;

import org.junit.Assert;
import org.junit.Test;

/**
 * Created by 传智播客*黑马程序员.
 */
public class DemoTest{

    @Test
    public void testSay(){
        Demo d = new Demo();
        String ret = d.say("maven");
        Assert.assertEquals("hello maven",ret);
    }

}

然后可以进行测试运行

运行的时候可以编辑运行模板:

在这里插入图片描述

然后点击运行:

4.4.2 使用骨架创建项目

  • 首先我们来看普通的java工程如何创建:

(1)创建maven项目的时候选择使用原型骨架

在这里插入图片描述

(2)创建完成后发现通过这种方式缺少一些目录,如下图

在这里插入图片描述

我们需要手动去补全目录,并且要对补全的目录进行标记,切记

在这里插入图片描述

  • 然后我们在来看web工程如何创建:

(1)选择web对应的原型骨架

在这里插入图片描述

(2)和前面创建普通项目一样,通过原型创建web项目得到的目录结构是不全的,因此需要我们自行补全,同时要标记正确,最终需要得到如下结构
在这里插入图片描述

(3)web工程创建好之后需要启动运行,需要使用一个tomcat插件来运行我们的项目,在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.itheima</groupId>
  <artifactId>web01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>web01 Maven Webapp</name>
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>web01</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
      </plugin>
    </plugins>
  </build>
</project>

(4)插件配置好后,在IDEA右侧maven-project操作面板上可以看到该插件,并且可以利用该插件启动项目

在这里插入图片描述

运行后该插件会给我们一个可运行地址:

在这里插入图片描述

如果我们想更换端口,只需要在pom.xml中配置该插件即可

<plugins>
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
            <port>80</port>
        </configuration>
    </plugin>

(5)同时为了运行方便我们也可以创建运行模板:

在这里插入图片描述

4.5 总结

  • 建议不要使用骨架创建maven项目
  • maven命令,大家知道具体的作用即可

五.Maven依赖管理

5.1 什么是依赖

​ 项目的运行过程中依赖那些jar,这些jar包通常通过坐标在maven的pom文件里面配置,这个过程就叫依赖。

​ 比如:项目A运行,依赖mysql的jar包,需要在pom.xml里面配置

  ~~~xml
mysql mysql-connector-java 6.0.6 ~~~

​ 或者项目A运行,依赖项目B,那就需要B项目B打成jar包,在pom.xml里面配置

<dependency>
	    <groupId>cn.itheima.demo1</groupId>
	 	 <artifactId>B</artifactId>
	 	 <version>0.0.1-SNAPSHOT</version>
 </dependency>

5.2 什么是依赖范围

依赖范围scope 作用:控制依赖和编译,测试,运行的classpath的关系.

大白话说:通过依赖范围,来指定引入的jar(核心api)在那个阶段存在。

主要的是三种依赖关系如下:

1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效

2.test:测试依赖范围。只对于测试classpath有效

3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api,jsp-api

4.runtime:运行时提供,对于测试,运行的classpath效。例如:jdbc驱动(数据库对应的jar包,比如mysql的jar)

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

大白话解释:

1、test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖(主程序)

2、compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去(主程序)

3、provided依赖:在编译和测试的过程有效,最后生成打包时不会加入,诸如:servlet-api,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突

4、runtime在运行的时候依赖,在编译的时候无效(主程序)

默认的依赖范围是compile

5.3 依赖传递:

依赖具有传递性,分两种

(1)直接依赖:在当前项目中通过依赖配置建立的依赖关系

(2)间接依赖:被依赖的资源如果依赖其他资源,则表明当前项目间接依赖其他资源

​ 注意:直接依赖和间接依赖其实也是一个相对关系

如图:

在这里插入图片描述

分析上图:

作用域是test的包不会传递到引用这个项目的其它项目,但如果不是test会传递依赖到其它项目。

如:项目A中有一个依赖包junit4.10,它的作用域是test

现在有一个项目A,引用项目B,如果项目A要使用junit4.10就必须自己重新定义依赖关系。

【因为不会传递依赖,所以不会从项目B中得到】

但:如果作用域是其它的,不是test

那么项目A可以直接使用不用自己再定义一个依赖关系。【因为会从项目A中自动传递依赖,而得到】

5.3.1 依赖的传递范围:
  • 直接传递

在这里插入图片描述

  • 间接依赖

在这里插入图片描述

在直接依赖和间接依赖里面的,依赖的jar包是否传递,如下图:
在这里插入图片描述

5.3.2 依赖传递的冲突问题:

在依赖传递过程中产生了冲突,我们有三种优先法则

(1)路径优先:当依赖中出现相同资源时,层级越深,优先级越低,反之则越高

(2)声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖靠后的

(3)特殊优先:当同级配置了相同资源的不同版本时,后配置的覆盖先配置的

5.3.3 依赖控制:控制自己的依赖的包是否往下传递
<dependency>
  		  <groupId>cn.itcast.a</groupId>
		  <artifactId>B</artifactId>
		  <version>0.0.1-SNAPSHOT</version>
  			<scope>compile</scope>
  			<!-- 表示依赖的B是否往下传递
  	如果是true,表示不往下传递,如果是false,表示继续往下传递  			 -->
  			<optional>true</optional>
 </dependency>
5.3.4 依赖排除:可以排除掉某些我们不需要的jar包排除依赖:
<dependency>
  			 <groupId>cn.itcast.B</groupId>
			  <artifactId>B</artifactId>
			  <version>0.0.1-SNAPSHOT</version>
			  <scope>compile</scope>
			 <!—项目里不需要B的jar:c-->
 <exclusions>
			  	<exclusion>
			  		 <groupId>cn.itcast.C</groupId>
					  <artifactId>C</artifactId>
			  	</exclusion>
			  </exclusions>
  		</dependency>

六.Maven生命周期与插件

6.1 生命周期

maven的构建生命周期描述的是一次构建过程经历了多少个事件

比如我们项目最常用的一套流程如下:

在这里插入图片描述

当然maven的生命周期不止这一套,总共分为3套,每套里面包含的事件如下

(1)clean:清理工作

(2)default:核心工作,例如编译,测试,打包等

在这里插入图片描述

对于default生命周期,每个事件在执行之前都会将之前的所有事件依次执行一遍

(3)site:产生报告,发布站点等

6.2 插件

前面我们讲了maven生命周期中的相关事件,那这些事件是谁来执行的呢?答案是maven的插件

如图:

在这里插入图片描述

图解说明:

  • 项目对象模型 (Project Object Model)
    一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、
    插件目标等。
  • 依赖管理系统(Dependency Management System)
    通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理。
    比如:项目依赖 junit4.9,通过在 pom.xml 中定义 junit4.9 的依赖即使用 junit4.9,
  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件
  • maven默认在各个生命周期上都绑定了预先设定的插件来完成相应功能
  • 插件还可以完成一些自定义功能

插件的配置方式如下:
在这里插入图片描述

在maven官网中有对插件的介绍:

http://maven.apache.org/plugins/index.html

6.3 总结

6.3.1 什么是maven的生命周期?

• Maven生命周期就是为了对所有的构建过程进行抽象和统一

• 包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤

6.3.2 Maven三大生命周期

阶段一: clean:清理项目的

• **阶段二:**default:构建项目的,主要项目 编译 测试 打包 安装等

阶段三: site:生成项目站点的,主要是项目的报告信息

生命周期Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:

在这里插入图片描述

总结:

**运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install **

此外,Maven的插件机制是完全依赖Maven的生命周期的,因此理解生命周期至关重要。

• Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的

• 每个插件都能实现多个功能,每个功能就是一个插件目标

• Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务

• 例如compile就是插件maven-compiler-plugin的一个插件目标

6.3.3 Maven的插件配置

<build>
 		<finalName>ROOT</finalName>
		<plugins>
		<!--配置Tomcat7插件 -->
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
                  <version>2.3</version>
				<configuration>
					<path>/</path>
					<port>8080</port>
				</configuration>
			</plugin>
         <!--配置Tomcat8插件:多多少少有点小问题,由于中央仓库没有,需要在配置插件库的地址 -->
               <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat8-maven-plugin</artifactId>
                <version>3.0-r1655215</version>
                <configuration>
                  <!-- <path>/</path> -->
                  <server>tomcat8</server>
                  <port>8080</port>
                </configuration>
      		</plugin>

            <!--编译插件 -->
               <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
			 </plugin>
	<!--maven的源码打包插件 -->
			 <plugin>  
                <artifactId>maven-source-plugin</artifactId>  
                <version>2.4</version>  
                <configuration>  
                    <attach>true</attach>  
                </configuration>  
                <executions>  
                    <execution>  
                        <phase>package</phase>  
                        <goals>  
                            <goal>jar-no-fork</goal>  
                        </goals>  
                    </execution>  
                </executions>  
            </plugin> 
<!--  maven的打包时,会把项目依赖的第三方jar也会打进来 -->
			<plugin>
                   <artifactId> maven-assembly-plugin </artifactId>
                   <configuration>
                        <descriptorRefs>
                             <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                             <manifest>
                                <mainClass>com.cetc.di.App</mainClass>
                             </manifest>
                        </archive>
                   </configuration>
                   <executions>
                        <execution>
                             <id>make-assembly</id>
                             <phase>package</phase>
                             <goals>
                                  <goal>single</goal>
                             </goals>
                        </execution>
                   </executions>
              </plugin>
		</plugins>
	</build>
	<!--tomcat8在中央仓库找不到,需要单独配置仓库地址-->
<pluginRepositories>
    <pluginRepository>
      <id>alfresco-public</id>
      <url>https://artifacts.alfresco.com/nexus/content/groups/public</url>
    </pluginRepository>
    <pluginRepository>
      <id>alfresco-public-snapshots</id>
      <url>https://artifacts.alfresco.com/nexus/content/groups/public-snapshots</url>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>daily</updatePolicy>
      </snapshots>
    </pluginRepository>
    <pluginRepository>
      <id>beardedgeeks-releases</id>
      <url>http://beardedgeeks.googlecode.com/svn/repository/releases</url>
    </pluginRepository>
  </pluginRepositories>

6.3.4 修改项目的jdk编译版本

<profiles>
	<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>
</profiles>
举报

相关推荐

0 条评论