Maven笔记

一、Maven简述


1.1 什么是Maven?


Maven笔记_第1张图片

Apache Maven 是一款基于 Java 平台的项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

简单来讲Maven就是一个构建工具,用来管理我们的项目和依赖(jar),这样我们能把更多的精力放在开发上。

当然除了学习Maven外后期还会接触Gradle等构建工具。(之前搞安卓的时候接触过Gradle)

Apache Maven官网:https://maven.apache.org/

Maven笔记_第2张图片


Maven是专门用于管理和构建Java项目的工具,它的主要功能有:

  • 提供了一套标准化的项目结构(所有IDE使用Maven构建的项目结构完全一样)

  • 提供了一套标准化的构建流程(如 编译、测试、打包(jar包)、发布等)

  • 提供了一套依赖管理机制(使用Maven坐标配置来管理各种依赖)

Maven笔记_第3张图片


1.2 Maven模型


  • POM(Project Object Model)项目对象模型。
  • Dependency 依赖管理模型。
  • Plugin 插件。

1.3 Maven仓库


Maven Repository(Maven仓库)

Maven中有如下3种仓库:

  • 本地仓库,自己电脑上的仓库(存jar包的位置)

  • 私服仓库,速度比中央仓库要快,通常都是由一些公司、组织搭建的私有仓库,用于同步中央仓库上的文件。

  • 中央仓库:在互联网中,由Apache团队维护,包含了基本所有的jar包,版权原因不包含Oracle的驱动包

  • 中央仓库地址:https://mvnrepository.com

    Maven笔记_第4张图片



二、Maven的安装配置


2.1 下载Maven


新版Maven的下载地址:https://maven.apache.org/download.cgi

Maven笔记_第5张图片


通常比较新的东西不太稳定,接下来我们下载一个maven3.6.1Windows版。

Maven3.6.1下载地址:https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries

Maven笔记_第6张图片

Maven笔记_第7张图片

下载成功后,将Maven文件夹移动到你的工作目录并解压包即可。


Maven目录结构如下:

Maven笔记_第8张图片

  • bin目录:存放一些可执行命令。(例如 mvn命令)
  • boot目录:该目录下只有一个文件plexus-classworlds-xxx.jar,这个文件它是一个类加载器框架,相对于默认的 java 类加载器,它提供了更丰富的语法以方便配置,Maven 使用该框架加载自己的类库。
  • conf目录:存放maven相关的配置文件。(例如 setting.xml)
  • lib目录:存放maven依赖的jar包。(Maven也是使用java开发的,所以它也需要依赖其他的jar包)

2.2 配置环境变量


1、新建系统变量MAVEN_HOME

变量名 变量值
MAVEN_HOME D:\Program Files\Environment\apache-maven-3.6.1(Maven的安装目录/位置)

2、在系统变量path中引用这个变量

变量名 变量值
Path %MAVEN_HOME%\bin

3、在命令提示符窗口中输入mvn -version

mvn -version

Maven笔记_第9张图片

出现上述结果,表示Maven已经安装成功啦。

当然Maven的卸载也很简单,将Maven的工作目录删除,然后删除它的环境变量即可。


2.3 配置本地仓库


1、在Maven的工作目录中创建一个maven_repo文件夹,用来存放我们以后从中央仓库下载的jar包。

Maven笔记_第10张图片


2、在conf/setting.xml文件中配置一个标签,并指向本地仓库位置。

Maven笔记_第11张图片

<localRepository>D:\Program Files\Environment\apache-maven-3.6.1\maven_repolocalRepository>

Maven笔记_第12张图片

配置之后,项目需要的依赖jar包如果本地仓库没有的话就需要去中央仓库下载,但是中央仓库在国外,速度会很慢,这时我们可以配置镜像服务器,只需要在conf/setting.xml中添加镜像地址即可。


2.4 配置阿里云镜像加速


在conf/setting.xml文件的标签中添加阿里云私服。

<mirror>
    <id>alimavenid>
    <mirrorOf>centralmirrorOf>
    <name>aliyun mavenname>
    <url>http://maven.aliyun.com/nexus/content/repositories/central/url>
mirror>

Maven笔记_第13张图片


2.5 配置使用JDK8编译

maven3.6.1版本默认的jdk版本是1.5,就会导致项目的兼容性问题,所以需要配置成1.8。

conf/settings.xml 中的 标签内配置:

Maven笔记_第14张图片

<profiles>
    <profile>
        <id>jdk-1.8id>
        <activation>
            <activeByDefault>trueactiveByDefault>
            <jdk>1.8jdk>
        activation>
        <properties>
            <maven.compiler.source>1.8maven.compiler.source>
            <maven.compiler.target>1.8maven.compiler.target>
           <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
        properties>
    profile>
profiles>


三、Maven的基本使用


3.1 Maven常用命令


Maven常用命令:

  • 编译(compile)

  • 清理(clean)

  • 打包(package)

  • 测试 (test)

  • 安装(install)

命令详解:

mvn compile         # 编译项目的源代码(会class字节码文件放在target目标目录中)
mvn clean           # 清除项目中target目录
maven package       # 将编译后的代码打包,如jar、war或者ear文件
mvn test            # 运行应用程序中的单元测试
mvn install         # 将项目包安装到本地仓库,这样项目包就可以用作其他本地项目的依赖

注意:执行maven命令需要当前目录有pom文件,然后在cmd窗口执行命令。

Maven笔记_第15张图片


3.2 Maven的生命周期


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

Maven 对项目构建的生命周期划分为3套:

  • clean:清理工作。
  • default:核心工作,例如编译,测试,打包,安装等。
  • site:产生报告,发布站点等。

注意: 同一生命周期内,执行后面的命令,前边的所有命令都会自动执行。

Maven笔记_第16张图片

例如 小张对maven项目进行打包操作,执行流程就是编译->测试->打包。

也就是同一生命周期内,执行后面的命令,前边的所有命令都会自动执行。


3.3 在IntelliJ IDEA中配置Maven


参考文章:https://blog.csdn.net/QZP51ZX/article/details/107522316

1、设置IntelliJ IDEA使用本地安装的Maven,并修改配置文件路径:

Maven笔记_第17张图片

2、设置maven在不联网的情况下使用本地插件构建项目:

-DarchetypeCatalog=internal

Maven笔记_第18张图片

然后重启IntelliJ IDEA即可!


3.4 Maven坐标详解


1、Maven坐标是用来干什么的?

  • Maven坐标指的是资源的唯一标识;
  • 使用坐标来构建项目或者引入项目中需要的依赖(dependency)

2、Maven坐标主要组成:

  • groupId:定义当前Maven项目隶属组织名称(通常是公司域名反写,例如: com.baidou)
  • artifactId:定义当前Maven项目名称(通常是模块名称)
  • version:定义当前项目的版本号(SNAPSHOP快照版本,RELEASE稳定版本 )

Maven笔记_第19张图片

Maven笔记_第20张图片


3.5 使用IDEA创建Maven普通项目


Maven笔记_第21张图片

maven项目结构详解:
Maven笔记_第22张图片

可以在IDEA安装一个MavenHelper,简化Maven的使用。

Maven笔记_第23张图片


3.6 使用IDEA导入Maven项目

1、选择右侧Maven面板,点击号。

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

3、如果没有Maven面板,选择View → Appearance > Tool Window Bars即可。

Maven笔记_第24张图片


3.7 使用IDEA构建Maven Web项目


1、创建一个Maven-Web项目

Maven笔记_第25张图片

Maven笔记_第26张图片

2、向pom.xml中引入Tomcat插件,并刷新依赖

<build>
    <plugins>
        
        <plugin>
            <groupId>org.apache.tomcat.mavengroupId>
            <artifactId>tomcat7-maven-pluginartifactId>
            <version>2.2version>
            <configuration>
                <port>8080port> 
                <path>/path>    
            configuration>
        plugin>
    plugins>
build>

Maven笔记_第27张图片


3、启动Tomcat

Maven笔记_第28张图片

控制台出现如下结果表示启动成功。

Maven笔记_第29张图片


4、测试访问 http://127.0.0.1:8080

Maven笔记_第30张图片

3.8 使用Maven构建SpringBoot项目


Maven 的配置:


<mirrors>
    <mirror>
        <id>nexus-aliyunid>
        <mirrorOf>centralmirrorOf>
        <name>Nexus aliyunname>
        <url>http://maven.aliyun.com/nexus/content/groups/publicurl>
    mirror>
mirrors>
 
	
<profiles>
    <profile>
        <id>jdk-1.8id>
        <activation>
            <activeByDefault>trueactiveByDefault>
            <jdk>1.8jdk>
        activation>
        <properties>
            <maven.compiler.source>1.8maven.compiler.source>
            <maven.compiler.target>1.8maven.compiler.target>
            <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
        properties>
    profile>
profiles>

1、 创建一个普通Maven项目

Maven笔记_第31张图片

Maven笔记_第32张图片

2、向 pom.xml 文件中引入依赖


<parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>2.3.4.RELEASEversion>
parent>


<dependencies>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
dependencies>

Maven笔记_第33张图片

ok已经成功将依赖导入到项目中!


3、创建一个入口程序,用于启动SpringBoot应用程序

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * SpringBoot启动类
 */
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args);
    }
}

Maven笔记_第34张图片


4、编写业务

package com.baidou.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "你好 SpringBoot!!!";
    }
}

Maven笔记_第35张图片


5、测试运行

执行启动类中的main方法便可以运行这个springboot应用:

Maven笔记_第36张图片

ok项目已经启动成功啦!

Maven笔记_第37张图片


测试访问:http://localhost:8080/hello

Maven笔记_第38张图片


6、简化配置,在resources目录中创建一个application.properties文件

# 修改tomcat服务器的端口号
server.port=8089

重新启动项目,并测试 http://localhost:8089/hello

Maven笔记_第39张图片


7、简化部署

向pom.xml引入打包插件,这样就可以将项目打成jar包,然后部署到服务器上啦。

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-maven-pluginartifactId>
		plugin>
	plugins>
build>

Maven笔记_第40张图片

点击右侧的maven->Lifecycle->package:(maven打包操作)

Maven笔记_第41张图片

然后target目标目录中便会自动生成该项目的jar包;

Maven笔记_第42张图片


运行jar文件:java -jar xxx.jar

Maven笔记_第43张图片



四、依赖管理


4.1 使用坐标导入jar包


Maven中央仓库:https://mvnrepository.com

1、在pom.xml中编写标签。

2、在标签中使用引入坐标。

3、定义坐标的groupldartifactldversion

4、点击刷新按钮,使坐标生效。


4.2 依赖范围


依赖范围(scope)指的是该jar包在哪个阶段时才会有效,只要在对应的依赖坐标里配置标签,便可以控制依赖的作用范围。也就是设置对应jar包的作用范围:编译环境、测试环境、运行环境。(不写的话默认值是compile )

依赖范围指的是坐标的依赖范围,

<dependency>
    <groupId>junitgroupId>
    <artifactId>junitartifactId>
    <version>4.13version>
    <scope>testscope> 
dependency>
依赖范围 编译有效 测试有效 运行时有效 打包有效 例子
compile spring-core
test x x x junit
provided x x servlet-api
runtime x JDBC驱动
system x x 本地maven仓库 之外的类库

4.3 解决依赖冲突问题


参考文章:https://blog.csdn.net/lovequanquqn/article/details/81627807

你可能感兴趣的:(JavaWeb,maven,java,开发语言)