Maven简记

1. 核心概念

1.1 插件
  • Maven实际上是一个执行插件的框架,每一个任务实际上是由插件完成的

  • 在执行Maven命令时,实际上是插件在完成对应的功能

  • 在项目中添加插件示例

    <build>
        <!--配置插件-->
        <plugins>
            <!--测试插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.4.2</version>
            </plugin>
            <!--编译插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <!--告诉Maven,代码是在jdk1.8上编译的-->
                    <source>1.8</source>
                    <!--程序应该运行在jdk1.8上-->
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
1.2 坐标
  • 坐标作用:在本地或者互联网上唯一标识一个项目

  • 坐标三个子元素:

    <!-- 定义当前Maven项目隶属的实际项目
    当前Maven项目和实际项目不一定是一对一的关系
    -->
    <groupId>org.example</groupId>
    <!-- 当前Maven项目的名称 -->
    <artifactId>Hello</artifactId>
    <!-- 当前Maven项目的版本号 
    SNAPSHOT(快照):加上该后缀,表示项目处于开发阶段
    -->
    <version>1.0-SNAPSHOT</version>
    
  • 在引入依赖或者配置插件时,也需要根据依赖或者插件的坐标进行配置,这样才能保证唯一性

1.3 项目约定目录结构

image-20210805175538416

1.4 依赖范围
  • 依赖的范围:compile、test、provided,默认采用compile
    依赖范围表格

2. 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">
    <!--Maven项目模型版本号,选取固定值 4.0.0-->
    <modelVersion>4.0.0</modelVersion>

    <!--项目坐标-->
    <groupId>org.example</groupId>
    <artifactId>Hello</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--打包后压缩文件的类型,默认是 jar 文件-->
    <packaging>jar</packaging>

    <!--依赖-->
    <dependencies>
        <!--mysql jdbc依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql_version}</version>
        </dependency>

        <!--德鲁伊池依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>

        <!--Spring依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.9</version>
        </dependency>

        <!-- 单元测试依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <!--设置属性-->
    <properties>
        <!--指定java版本的一种方式,SpringBoot框架特有的属性-->
        <java.version>13</java.version>
        <!--自定义全局变量,用 ${变量名} 的格式使用该变量}-->
        <my_var>100</my_var>
        <!--自定义变量,标识mysql-connector-java版本号-->
        <mysql_version>8.0.12</mysql_version>
    </properties>

    <!--maven在进行项目构建时的一些配置信息,例如指定编译java代码使用jdk版本等-->
    <build>
        <!--资源插件
        默认情况下,maven不会处理 src/main/java 目录下的非java文件,但有时我们需要用到.xml、.properties等类型的配置文件
        资源插件的作用就是告诉maven,在编译时,对指定文件需要进行处理,并将指定文件拷贝到target下的对应目录中-->
        <resources>
            <resource>
                <directory>src/main/java</directory><!--所在目录-->
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

        <!--配置插件-->
        <plugins>
            <!--测试插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.4.2</version>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>
            <!--编译插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <!--告诉Maven,代码是在jdk1.8上编译的-->
                    <source>13</source>
                    <!--程序应该运行在jdk1.8上-->
                    <target>13</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3. Maven常用命令

  1. 以下命令必须在pom.xml所在目录下执行
  2. 以下命令按照顺序排列,在执行某一命令时,该命令之前的命令会按照顺序自动执行
  • mvn clean

    • 清理(会删除原来编译和测试的目录,即target目录,但是已经install到仓库的包不会删除)
  • mvn compile

    • 编译主程序(会在当前目录下生成一个target目录里面存放着编译主程序之后生成的字节码文件)
    • Tip:该命令只会编译主程序,也就是main目录下的java文件
    • 还会把main/resources目录下的所有文件拷贝到target/classes目录下
  • mvn test-compile

    • 编译测试程序(会在当前目录下生成一个target,里边存放着编译测试程序之后生成的字节码文件)
    • Tip:该命令只编译测试程序,也就是test目录下的java文件
  • mvn test

    • 测试,会生成一个目录surefire-reports(在target目录下),保存测试结果)
  • mvn package

    • 打包主程序(会编译、编译测试、测试,并且按照pom.xml配置把主程序打包生成jar包或者war包)
  • mvn install

    • 安装主程序(会把本工程打包,并且按照本工程的坐标保存在本地仓库中)
  • mvn deploy

    • 部署主程序(会把本工程打包,按照本工程的坐标保存在本地仓库中,并且还会保存在私服仓库中,还会自动把项目部署在web容器中)
  • mvn install

    • 安装主程序(会把本工程打包,并且按照本工程的坐标保存在本地仓库中)
  • mvn deploy

    • 部署主程序(会把本工程打包,按照本工程的坐标保存在本地仓库中,并且还会保存在私服仓库中,还会自动把项目部署在web容器中)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值