maven学习笔记(一)基本概念及生命周期

目录

概述

生命周期

安装环境

核心概念

目录结构

仓库

pom

常用命令

构建原理

配置插件

Maven在IDEA中的应用

      IDEA中集成Maven

     创建Maven项目

依赖管理

Maven常用设置

     全局变量

     指定资源位置


概述

在传统开发中存在诸多问题

  • 一个项目做成一个工程,造成工程比较庞大,需要使用多模块来划分项目;
  • 项目中需要的数量众多的 jar 包,需要手动下载并引入,并且多个项目需要的 jar 包存在重复的问题;
  • 项目中需要的 jar 包有版本兼容的问题,需要手动解决;
  • 项目中需要的 jar 包又依赖其它的 jar 包,需要手动解决。

maven的出现成功解决了上述问题,Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,可以对 Java 项目进行构建、依赖管理。Maven 是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用,Maven 是一 款在大型项目开发过程中不可或缺的重要工具。

Maven 可以整合多个项目之间的引用关系,我们可以根据业务和分层需要任意拆分一个项目; Maven 提供规范的管理各个常用 jar 包及其各个版本,并且可以自动下载和引入项目中; Maven 可以根据指定版本自动解决 jar 包版本兼容问题;
Maven 可以把 jar 包所依赖的其它 jar 包自动下载并引入项目。 

生命周期

  • 清理:删除以前的编译结果,为重新编译做好准备。
  • 编译:将Java源程序编译为字节码文件。
  • 测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
  • 报告:在每一次测试后以标准的格式记录和展示测试结果。
  • 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web 工程对应war包。
  • 安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
  • 部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行

安装环境

  1. 确保安装了 java 环境:maven 本身就是 java 写的,所以要求必须安装 JDK。 查看 java 环境变量:echo %JAVA_HOME%
  2. 下载并解压 maven 安装程序: http://maven.apache.org/download.cgi
  3. 配置 Maven 的环境变量:
    MAVEN_HOME=d:/apache-maven-3.3.9 或者 M2_HOME=d:/apache-maven-3.3.9

    path=%MAVEN_HOME%/bin; 或者%M2_HOME%/bin;

  4. 验证是否安装成功: mvn –v

核心概念

Maven能够实现自动化构建是和它的内部原理分不开的,这里我们从 Maven的九个核心概念入手, 看看Maven是如何实现自动化构建的

  • POM
  • 约定的目录结构
  • 坐标
  • 依赖管理
  • 仓库管理
  • 生命周期
  • 插件和目标
  • 继承
  • 聚合

目录结构

maven中约定这样的目录结构

       Hello

           |---src
           |---|---main

           |---|---|---java

           |---|---|---resources

           |---|---test

           |---|---|---java

           |---|---|---resources

           |---pom.xml

说明:        

Hello:根目录,也就是工程名 src:源代码

main:主程序
java:主程序的 java 源码 resources:主程序的配置文件

test:测试程序
java:测试程序的 java 源码 resources:测试程序的配置文件 pom.xml:Maven 工程的核心配置文件。

仓库

1:仓库的分类 

       【1】:本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有Maven工程服务

        【2】:远程

               a私服:搭建在局域网环境下,为当前局域网范围内的所有Maven工程服务

               b:中央仓库:架设在Internet上,为全世界所有Maven工程服务

               c:中央仓库镜像:为了分担中央仓库的流量,提升用户俯冲速度。

2:仓库中保存存的内容:Maven工程

    【1】Maven自身所需要的插件

    【2】第三方框架或工具的jar包

    【3】我们自己开发的Maven工程。

3.开发人员需要使用mysql驱动--->maven首先查本地仓库--->私服--->镜像--->中央仓库

pom

pom:项目对象模型,是一个pom.xml文件
1)坐标唯一值, 在互联网中唯一标识一个项目的
      <groupId>公司域名的倒写</groupId>
     <artifactId>自定义项目名称</artifactId>
     <version>自定版本号</version>
2) packaging: 打包后压缩文件的扩展名,默认是jar ,web应用是war 
          packaging 可以不写, 默认是jar
3) 依赖
        dependencies 和dependency ,相当于是 java代码中import

         <dependencies>
            <!--依赖  java代码中 import -->
          <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.9</version>
         </dependency>
     </dependencies>

 4)properties:设置属性

 5)build : maven在进行项目的构建时, 配置信息,例如指定编译java代码使用的jdk的版本等

常用命令

  • mvn clean 清理(会删除原来编译和测试的目录,即target目录,但是已经install到仓库里的包不会删除)
  • mvn compile 编译主程序(会在当前目录下生成一个 target,里边存放编译主程序之后生成的字节码文件)  target中
  • mvn test-compile编译测试程序(会在当前目录下生成一个 target,里边存放编译测试程序之后生成的字节码文件)   
  • mvn test 测试(会生成一个目录surefire-reports,保存测试结果)
  • mvn package打包主程序(会编译、编译测试、测试、并且按照 pom.xml 配置把主程序打包生成 jar 包或者 war 包)
  • mvn install 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
  • mvn install -Dmaven.test.skip=true 跳过test
  • mvn deploy 部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。还会自动把项目部署到 web 容器中)。

构建原理

maven 过程构建周期,由 maven 的插件 plugin 来执行完成。如下图所示

  • clean插件maven-clean-plugin:2.5

       --   clean 阶段是独立的一个阶段,功能就是清除工程目前下的 target 目录)

  • resources插件maven-resources-plugin

       resource 插件的功能就是把项目需要的配置文件拷贝到指定的目当,默认是拷贝 src\main\resources 目录下的件到
       classes 目录下(见下图)

       

  • compile插件maven-compiler-plugin

       compile 插件执行时先调用 resouces 插件,功能就是把 src\mainjava 源码编译成字节码生成 class 文件,并把编译好
       的 class 文件输出到 target\classes 目录下

  • test 插件 maven-plugin:2.12.4:test 

       单元测试所用的 compile 和 resources 插件和主代码是相同的,但执行的目标不行,目标 testCompile 和 testResources
       是把 src\test\java 下的代码编译成字节码输出到 target\test-classes,同时把 src\test\resources 下的配置文件拷贝到
      target\test-classes

  • package插件maven-jar-plugin/maven-war-plugin

      把 class 文件、配置文件打成一个 jar(war 或其它格式)包

  • deploy发布插件maven-install-plugin

发布插件的功能就是把构建好的 artifact 部署到本地仓库,还有一个 deploy 插件是将构建好的 artifact 部署到远程
仓库

maven-resources-plugin 过程

配置插件

插件可以在自己的项目中设置,最常使用的是 maven 编译插件。设置项目使用的 jdk 版本时通过编译插件指定。
pom.xml 文件<build>中设置。

<build>
<plugins>
   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
      <configuration>
         <source>1.8</source>
         <target>1.8</target> </configuration>
   </plugin>
</plugins>
</build>

运行mvn compile后可以看到设置的新版本插件生效了

Maven在IDEA中的应用

IDEA中集成Maven

创建Maven项目

  • File-Nem-Project

填写坐标

填写项目名称

生成的目录结构

依赖管理

Maven解析依赖信息时会到本地仓库中查找被依赖的jar包,依赖的范围:compile、test、provided,默认采用 compile

 

compile

test

provided

对主程序是否有效

对测试程序是否有效

是否参与打包

是否参与部署

Maven常用设置

全局变量

在 Maven 的 pom.xml 文件中,<properties>用于定义全局变量,POM 中通过${property_name}的形式引用变量的值。 定义全局变量:

指定资源位置

src/main/java 和 src/test/java 这两个目录中的所有*.java 文件会分别在 comile 和 test-comiple 阶段被编译,编 译结果分别放到了 target/classes 和 targe/test-classes 目录中,但是这两个目录中的其他文件都会被忽略掉,如果需 要把 src 目录下的文件包放到 target/classes 目录,作为输出的 jar 一部分。需要指定资源文件位置。以下内容放到 <buid>标签中。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值