Maven学习笔记

Maven

一、Maven的作用

1.传统项目管理状态分析

  • jar包不统一,jar包不兼容
  • 工程升级维护复杂

2.Maven是什么

  • Maven本质**是一个项目管理工具**,将项目开发和管理过程抽象成一个项目对象模型(POM:Project Object MOdel)

  • 一个项目创建一个pom.xml

    在这里插入图片描述

3.Maven可以干什么

  • 项目构建:提供标准的、跨平台的自动化项目构建方式

  • 依赖管理:方便快捷的管理项目的依赖资源(jar包),避免资源版本的互相冲突

  • 统一开发结构:提供标准的、统一的项目结构

    在这里插入图片描述

二、Maven下载和安装

1.下载

  1. 下载地址

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

    下载地址:http://maven.apache.org/download.cg

  2. 解压到任意位置

2.环境配置

  1. Maven依赖于java,需要配置JAVA_HOME

  2. 配置MAVEN_HOME

    1. 系统变量中新建一个**MAVEN_HOME值是Maven的安装目录**

      在这里插入图片描述

    2. 在Path中添加一个路径**%MAVEN_HOME%\bin**

      在这里插入图片描述

    3. cmd中输入mvn,如果出现任务指令,则说明配置成功

      在这里插入图片描述

2.目录介绍

  • bin:可运行指令
  • boot:里面有一个jar包,是Maven的类加载器
  • conf:存放Maven的配置文件
  • lib:存放Maven运行的jar包

三、Maven基本概念

1.仓库

  • 用于存储资源,包含各种jar包
1.仓库的分类

在这里插入图片描述

  • 远程仓库:为本地仓库提供资源

    1. 中央仓库:Maven官方的服务器,存放着所有的的jar包
    2. 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
  • 本地仓库:保存在自己计算机上的jar包

2.私服的作用
  • 保存具有版权的资源,包含购买或自主研发的jar
  • 中央仓库中的jar都是开源的,不能存储就有版权的资源
  • 一定范围内共享资源,仅对内部开发,不对外共享

计算机先访问本地仓库,如果有直接获取;没有会让从私服获取;私服没有就回去访问中央仓库,私服获取之后,返回给本地服务器

2.坐标

1.坐标的概念
  • 概念Maven中的坐标用于描述仓库中资源的位置

  • 作用:通过该标识,可以将资源的识别与下载工作交给机器完成

2.坐标的主要组成(g,a,v)
  • groupId:当前Maven项目隶属组织名称+项目名(通常是域名反写,例如:org.mybatis)
  • artifactId:定义当前Maven模块名称(通常是模块名称)
  • version:定义当前版本号
  • packaging:定义该项目的打包方式(不属于坐标的组成
3.获取jar包的坐标
  1. 访问maven的仓库地址:mvnrepository.com

  2. 输入需要的jar包名称

  3. 选择jar包的版本号

  4. 新的页面中有一个Maven的框,复制即可

    在这里插入图片描述

四、仓库配置

1、本地仓库配置(资源下载到哪里)

  1. 在任意位置创建一个文件夹

  2. 在文件夹里面创建一个文件夹:repository

  3. 打开maven安装目录下的conf文件夹

  4. 打开里面的settings.xml文件

  5. 复制下面的代码到里面

    <localRepository>创建的repository文件夹地址</localRepository>
    

2、远程仓库配置(资源从哪里来)

  1. 打开maven安装目录下的conf文件夹

  2. 打开里面的settings.xml文件

  3. 找到mirror标签

  4. 复制注释中的一份到mirror标签中

    <mirror>
     	<id>huaweicloud</id>
     	<name>mirror from maven huaweicloud</name>
    		 <mirrorOf>central</mirrorOf>
     	<url>https://mirrors.huaweicloud.com/repository/maven/</url>
     </mirror>
    

五、第一个Maven项目(手动)

1.Maven工程目录结构

在这里插入图片描述

  • main:用来写java程序
  • test:用来写测试程序
  • java:用来存放java源文件
  • resources:用来存放资源文件

2.项目构建命令

构建命令需要在pom.xml的包下使用

在这里插入图片描述

六、第一个Maven项目(插件创建Maven工程)

在这里插入图片描述

1.创建java工程

  1. cmd移动到一个空目录

  2. 输入下面的命令

    mvn archetype:generate -DgroupId=包名 -DartifactId=项目名称 -DarchetypeArtifactId=maven-archetype-quickstart -Deversion=项目的版本号 -DinteractiveMode=false
    

2.创建web工程

  1. cmd移动到一个空目录

  2. 输入下面的命令

    mvn archetype:generate -DgroupId=包名 -DartifactId=项目名称 -DarchetypeArtifactId=maven-archetype-webapp -Deversion=项目的版本号 -DinteractiveMode=false
    
  3. java的包需要自己造

七、第一个Maven项目(IDEA生成)

1.配置Maven

  1. 新建项目–>Empty Project

在这里插入图片描述

  1. 创建完成后修改项目的sdk

    在这里插入图片描述

  2. 修改Maven的版本为自己下载的,并且覆盖掉Idea的配置文件为自己的

    在这里插入图片描述

2.手工创建java项目

  1. 创建模块,选择Maven

    在这里插入图片描述

  2. 选择填写模块的Maven的坐标,然后一路next

    在这里插入图片描述

  3. 设置界面进入项目结构,给包配置对应的属性

    在这里插入图片描述

  4. 进入pom.xml配置文件,打上需要用的jar包,写完之后需要点击右边的刷新

    在这里插入图片描述

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
    
  5. 构建项目

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

3.使用Maven模板创建java工程

  1. 选择模块,新建一个maven模块,勾选Create From archetype(使用模板),然后选择quickstart

    在这里插入图片描述

  2. 修改GroupId和ArtifactId,然后一路next

    在这里插入图片描述

  3. 然后在项目目录的main、test包下新建resources包
  4. 右键新建的resources包,选择Mark Directory as–》Sources Root

4.使用Maven模板创建web工程

  1. 选择模块,新建一个maven模块,勾选Create From archetype(使用模板),然后选择webapp在这里插入图片描述
  2. 修改GroupId和ArtifactId,然后一路next在这里插入图片描述
  3. 在main包下创建java包,在src目录下创建test包,在test包下创建java、resources包
  4. 然后给包相应的颜色

    在这里插入图片描述

4.tomcat插件安装与web工程的启动

  • build:打的是插件
  1. 修改模块下的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/maven-v4_0_0.xsd">
    
    
        <modelVersion>4.0.0</modelVersion>
        <packaging>war</packaging>
    
        <name>web01</name>
        <groupId>com.junqing</groupId>
        <artifactId>web01</artifactId>
        
        <dependencies>
        </dependencies>
    
    </project>
    
  2. 打开maven坐标库,搜索**tomcat maven**,找到org.apache.tomcat.maven的包

    在这里插入图片描述

    在这里插入图片描述

  3. 选择2.1版本,复制在这里插入图片描述
  4. 打开pom.xml文件,先设置一个build标签,然后使用plugins标签,然后使用plugin标签
  5. 将复制的标签粘贴到里面,把粘贴的标签dependency标签删掉
    <!--构建-->
    <build>
      <!--设置插件-->
      <plugins>
        <!--设置具体插件-->
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
        </plugin>
      </plugins>
    </build>
    
  6. 然后刷新maven,加载资源
  7. 然后使用maven的tomcat插件,运行项目,启动成功之后就会给一个地址,点击就可以访问项目

    在这里插入图片描述

  8. 如果需要修改端口:在配置第五步里面添加configuration标签
    <!--配置-->
    <configuration>
      <!--修改端口号-->
      <port>80</port>
      <!--修改路径-->
      <path>/</path>
    </configuration>
    
  9. 如果嫌启动麻烦:可以配置一个按钮

    在这里插入图片描述

5、pom配置文件说明

<?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/maven-v4_0_0.xsd">
  <!--指定pom的模型版本(不用修改)-->
  <modelVersion>4.0.0</modelVersion>
  <!--打包方式:web工程为war,java工程为jar-->
  <packaging>war</packaging>

  <!--name没用-->
  <name>Test02</name>
  <!--通常为域名反写-->
  <groupId>com.junqing</groupId>
  <!--项目id:通常是项目名-->
  <artifactId>Test02</artifactId>
  <!--版本号(随便写):release(完成版),SNAPSHOT(开发版)-->
  <version>1.0-SNAPSHOT</version>
  <!--设置当前工程的所有依赖-->
  <dependencies>
    <!--当前工程的具体依赖-->
    <dependency>
      <groupId></groupId>
      <artifactId></artifactId>
    </dependency>
  </dependencies>
  <!--构建-->
  <build>
    <!--设置插件-->
    <plugins>
      <!--设置具体插件-->
      <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>

八、依赖管理

  • 依赖指当前项目运行所需要的jar,一个项目可以设置多个依赖

1.配置项目依赖

配置依赖的方式:在pom.xml中的dependencies中添加dependency(可以有多个)

<dependencies>
    <!--具体依赖(可以有多个)-->
    <dependency>
      <groupId>log4j</groupId><!--群组id-->
      <artifactId>log4j</artifactId><!--项目id-->
      <version>1.2.14</version><!--版本号-->
    </dependency>
    <!--第二个具体依赖-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
  </dependencies>

2.依赖传递

1.依赖传递的概念

例如:项目2需要用到项目3,这个时候需要把项目3作为资源配置到项目2中

  • 直接依赖:在当前项目中通过配置依赖建立的依赖关系
  • 间接依赖:通过依赖传递,传递过来可以用的
2.传递依赖的配置方法

把被调用的项目坐标配置到调用项目的dependency中

  • 项目坐标:group、artifactId、version
<!--配置依赖-->
<dependency>
  <groupId>com.junqing</groupId>
  <artifactId>Test01</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>
3.依赖传递冲突问题
  • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
  • 声明优先:当资源在同层被依赖时,谁先被配置,谁先被使用
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

3.可选依赖(别人能不能看见)

  • 对外隐藏当前所依赖的资源

  • 所添加的依赖中加一个**optional标签**
    <dependency>
      <groupId>com.junqing</groupId>
      <artifactId>Test01</artifactId>
      <version>1.0-SNAPSHOT</version>
      <optional>true</optional><!--隐藏起来,别人就看不见了-->
    </dependency>
    

4.排除依赖(主动不要别人的某个资源)

  • 主动断开依赖的资源
  • 案例:项目3中的一个依赖项目2不需要
  1. 例如:排除掉项目三中的log4j
<!--不要它里面的log4j-->
<exclusions>
  <exclusion>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
  </exclusion>
</exclusions>

5.依赖范围

依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围

  1. 作用范围

    • 主程序范围有效(main文件夹范围内)
    • 测试程序范围有效(test文件夹范围内)
    • 是否参与打包(package指令范围内)

    在这里插入图片描述

6.依赖范围传递性(了解即可)

带有依赖范围的资源在进行传递时,作用范围将受到影响

在这里插入图片描述

九、生命周期与插件

  • 各个构件环节执行的顺序不能被打乱,必须按照规定的正确顺序来执行
  • Maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务由插件来完成
  • Maven核心程序为了更好的实现自动化构建,按照这样的特点执行生命周期中的各个阶段:不论要执行哪一阶段,都会从第一步开始执行(生命周期的第一步开始)

1.项目构建生命周期

  • clean:清理工作
  • default:核心工作,例如编译,测试,打包,部署
  • site:产生报告,发布站点
1.1、clean生命周期
  • pre-clean:执行一些需要在clean之前完成的工作
  • clean:移除上一次构建生成的文件
  • post-clean:执行一些需要在clean之后立刻完成的工作
1.2、default(构建)生命周期

在这里插入图片描述

下面的会把上面的全部执行

例如:

  1. test会把上面的都执行
  2. package会把他上面的都执行

2.插件

  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认maven在各个生命周期上已经绑定了预设功能
  • 通过插件可以自定义其他功能
  1. 插件的使用

    <!--构建-->
    <build>
      <!--设置插件-->
      <plugins>
        <!--设置具体插件-->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>2.2.1</version>
          <!--执行什么动作-->
          <executions>
            <!--具体执行什么动作-->
            <execution>
              <goals>
                <!--将源码打包-->
                <goal>jar</goal>
              </goals>
              <!--什么时候执行-->
              <phase>generate-resources</phase>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
     <plugins>
        <!--设置具体插件-->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>2.2.1</version>
          <!--执行什么动作-->
          <executions>
            <!--具体执行什么动作-->
            <execution>
              <goals>
                <!--将源码打包-->
                <goal>jar</goal>
              </goals>
              <!--什么时候执行-->
              <phase>generate-resources</phase>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值