Maven知识点速查

时间:2022-05-07
本文章向大家介绍Maven知识点速查,主要内容包括Maven常用命令、Maven命令行创建目录骨架、Maven中的坐标和仓库、Maven生命周期和插件、Maven的pom.xml结构的解析、Maven依赖范围、Maven依赖传递、Maven依赖冲突,则看规则、Maven的聚合和继承、Maven的构建web项目、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

本文是学习项目管理利器——maven的Maven知识点速查

前置知识:无

Maven常用命令

  • compile 编译src/main/java文件
  • test 运行src/test/java下的带@Test的测试文件
  • package 打包src/main/java到target目录下生成jar包
  • install 打包并把jar包拷贝到本地仓库.m2下
  • deploy 打包并把jar包拷贝发布到远程仓库

Maven命令行创建目录骨架

  • mvn archetype:generate

Maven中的坐标和仓库

  • 构件通过坐标作为ID
  • 坐标包含
    • groupId
    • artifactId
    • Version
  • 仓库:
    • 本地仓库
    • 远程仓库

Maven生命周期和插件

生命周期:是一种工程的抽象

  • clean 清理
    • pre-clean
    • clean
    • post-clean
  • default 构建(最核心)
    • compile
    • test
    • package
    • install
  • site 生成站点
    • pre-site
    • post-site
    • site-deploy 发布站点 插件:是对生命周期的实现 使用插件
<build>
    <plugins>
        <groupId>xxx</groupId>
        <artifactId>xxx</artifactId>
        <version>xxx</version>
        <executions>
            <phase>package</phase> <!-- 生命周期那个阶段 -->
            <goals>
                <goal>jar-no-fork</goal><!--做什么事-->
            </goals>
        </executions>
    </plugins>
</build>

Maven的pom.xml结构的解析

<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> <!--固定搭配 -->
    <groupId>反写的公司网址+项目名</groupId>   <!-- 坐标 -->
    <artifactId>项目名+模块名(项目中的一个模块)</artifactId>
    <packaging>jar</packaging> <!-- 打包,jar、war、zip、pom -->
    <version>1.0-SNAPSHOT</version>
    <!-- 0.x.x 表示大版本
    x.0.x 分支版本
    x.x.0 小版本
    0.0.1snapshot 快照 
    alpha 内测
    beta 公测
    release 稳定
    GA 正式发布 -->

    <name></name> <!--文档用-->
    <url></url> <!-- 项目地址 -->
    <description></description>
    <developers></developers>
    <lincences></lincences>
    <organization></organization>


    <denpendencies>
        <denpendency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.2.RELEASE</version>
            <type></type>
            <scope>test</scope>
            <optional></optional> <!-- 设置依赖是否可选 -->
            <exclusions><!-- 排除依赖,比如A->B->C,而A不想依赖C -->
                <exclusion>
                </exclusion>
            </exclusions>
        </denpendency>
    </denpendencies>

    <!-- 依赖管理,用在父模块中供继承用, -->
    <dependencyManagement>
        <denpendencies>
            <dependency></dependency>
        </denpendencies>
    </dependencyManagement>

    <build>
        <!-- 插件列表 -->
        <plugins>
            <plugin>
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
            </plugin>
        </plugins>
    </build>

    <!-- 继承 -->
    <parent></parent>
    <!-- 模块 -->
    <modules>
        <module>
        </module>
    </modules>

Maven依赖范围

test

  1. compile 默认编译和运行都有效
  2. test 测试
  3. runtime 运行和测试时有效
  4. provided 编译和测试有效
  5. import 只用在dependencyManagement中,表示从其他pom导入dependency的配置

Maven依赖传递

A->B->C,则A间接依赖C,A中会引入C的jar包,可以排除依赖用,则C不见了

Maven依赖冲突,则看规则

  1. 短路优先
    • A->B->C-X(jar) 不选这条
    • A->D->X(jar) ✅
  2. 先声明先优先:如果路径长度相同,则谁先声明,先解析谁

Maven的聚合和继承

聚合:继承:

Maven的构建web项目

在里使用坐标标记的jetty或tomcat插件