Maven小结

1. maven

​ 是一个项目的构建工具

2. maven的作用

  1. 管理依赖:jar管理的,下载,版本
  2. 构建项目,完成项目代码的编译,测试,打包,部署

3. maven的使用方式

  1. 独立使用maven:使用maven的各种命令,完成代码的编译,测试,打包等
  2. 结合开发工具使用,一般在idea中使用maven:简单,快捷,不需要记命令

4. maven的安装

  1. 获取安装包,zip文件
  2. 解压缩文件,到一个目录,非中文目录
  3. 配置环境变量,M2_HOME,它的值是maven的安装目录
  4. 在path中加入%M2_HOME\bin
  5. 测试maven的安装,使用mvn -v,查看maven的版本信息

5. maven的核心概念

  1. 约定的目录结构

    • 项目的目录Hello
    • srcpom.xml平级
    • src/main
      • java:主程序java文件
      • resources:配置文件
    • src/test
      • java:测试程序代码
      • resources:测试使用的配置文件
  2. 坐标(gav)

    1. groupId:组织编码,域名倒写
    2. artifactId:项目名称
    3. version:自定义版本号
  3. 依赖(dependency):maven管理依赖

    <!--使用依赖吧jar导入到项目中-->
    <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
    </dependency>
  4. 仓库

    • 存放的jar,maven的插件等等
    • 仓库分类
      • 本地仓库:可以在maven安装目录/conf/settings.xml指定,<localRespository>非中文路径,不要有空格</localRespository>
      • 中央仓库:最权威的,所有资源都在这里
      • 中央仓库的镜像:分担压力的
      • 私服:公司的局域网内部使用的
  5. maven的命令:maven通过命令完成项目的构建

    1. mvn clean:清理
    2. mvn compile:编译src/main/java目录中的程序,把java编译为class文件,并放到target/classes目录中;同时会把src/main/resources/目录中的文件拷贝到target/classes目录
    3. mvn test-compile:编译src/main/test目录下的java程序,拷贝到target/test-classes目录
    4. mvn test:可以进行单元测试,使用junit测试src/main/java目录中的程序是否符合要求
    5. mvn package:打包,把程序中src/main/目录下面的java编译后的class和resources中的配置文件放入到一个压缩文件中,javase-jar,web-war
    6. mvn install:把jarwar安装到本机的仓库中
  6. maven的生命周期和插件

    • 生命周期:项目的构建过程,清理、编译、测试、报告、打包、安装、部署
    • 插件:maven提供的功能,用来执行清理、编译、测试、报告、打包的程序

6. 依赖范围

  1. compile:默认,在够贱的编译、测试、打包、部署需要
  2. test:只在测试阶段需要
  3. provided:在部署时,由服务器提供,项目本身不需要自带

7. maven常用设置

  1. maven自己的属性

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>14</maven.compiler.source>
    <maven.compiler.target>14</maven.compiler.target>
  2. 自定义变量

    <!--自定义变量,表示版本号-->
    <junit.version>4.11</junit.version>
    
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
  3. resource资源插件

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory><!-- 所在的目录 所在的目录 所在的目录-->
                <includes><!-- 包括目录下的 包括目录下的 包括目录下的 .properties,.xml 文件都会扫描到 文件都会扫描到 文件都会扫描到 文件都会扫描到 -->
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <!--filtering选项 false不启用过滤器, 不启用过滤器, 不启用过滤器, 不启用过滤器, *.property已经起到过滤的作用了 已经起到过滤的作用了 已经起到过滤的作用了 已经起到过滤的作用了 已经起到过滤的作用了-->
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
    1. 默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录中的文件拷贝到target/classes目录中。对于src/main/java目录下的非java文件不处理,不拷贝到target/classes目录
    2. 我们的程序有需要把一些文件放置src/main/java目录中,当我在执行java程序时,需要用到scr/main/java目录中的文件。需要告诉maven在mvn compile编译src/main/java目录下的程序时,需要把文件一同拷贝到target/classes目录中。此时就需要在<build>中加入<resources>

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!