Maven

目录

目录

Maven

目录

学习之前你应该了解并且需要准备的

软件开发中的阶段

Maven能做什么

没有Maven参与的依赖管理

什么是Maven [ˈmeɪvn]

Maven中的概念

Maven工具的获取与安装

Maven的使用方式

Maven的核心概念

约定的目录结构

POM文件

坐标

依赖 dependency

仓库

Maven生命周期,插件和命令

单元测试(junit)

命令

自定义配置插件

Maven和idea的集成

idea中继承maven

idea中创建maven项目

idea中使用maven插件

idea导入maven项目

依赖管理

常用设置


学习之前你应该了解并且需要准备的

软件开发中的阶段

需求分析:分析项目具体需要完成的功能,有什么要求,具体怎么实现

设计阶段:根据分析结果,涉及项目的使用什么技术,解决难点

开发阶段:编码实现功能,编译代码,自我测试

测试阶段:专业测试人员,测试整个项目的功能是否符合设计要求,出一个测试报告

项目打包,发布阶段:给用户安装项目

Maven能做什么

  1. 项目的自动构建,帮助开发人员做项目代码的编译,测试,打包,安装,部署等工作

  2. 管理依赖:管理项目中使用的各种jar包

    依赖:项目中需要使用的其他资源,常见的是jar。比如项目要使用的mysql驱动,我们就说项目依赖mysql驱动

没有Maven参与的依赖管理

需要从网络单独下载某一个jar;

需要选择正确的版本;

手工处理jar文件之间的依赖;

什么是Maven [ˈmeɪvn]

Maven是apache基金会的开源项目,使用java语言开发。

Maven是项目的自动化工具。管理项目的依赖

Maven中的概念

  1. POM

  2. 约定的目录结构

  3. 坐标

  4. 依赖管理

  5. 仓库管理

  6. 生命周期

  7. 插件与目标

  8. 继承

  9. 聚合

Maven工具的获取与安装

地址:http://maven.apache.org/ 从中下载。本笔记使用的3.3.9版本

安装:

  1. 确定JAVA_HOME指定jdk安装目录。

  2. 解压缩apache-maven-3.3.9-bin.zip,到一个目录下,该目录路径不要有中文和空格

  3. 把maven安装目录下的bin路径添加到path中

  4. 测试maven的安装。在命令行执行mvn -v

C:\Users\yueyinghaibao>mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: D:\apache-maven-3.3.9\bin\..
Java version: 1.8.0_271, vendor: Oracle Corporation
Java home: C:\Program Files (x86)\Java\jre1.8.0_271
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "x86", family: "dos"

Maven的使用方式

  1. maven可以独立使用:创建项目,编译代码,测试程序,打包,部署等等

  2. maven和idea一起使用:通过idea借助maven,实现编码,测试,打包等等

Maven的核心概念

约定的目录结构

maven项目使用的大多数人遵循的目录结构。叫做约定的目录结构

project文件夹
    \src
        \main               //叫做主程序目录(完成项目功能的代码和配置文件)
            \java           //源代码(包和相关的类定义)
            \resources      //配置文件
        \test               //放置测试程序代码(开发人员自己写的测试代码)
            \java           //测试代码的(junit)
            \resources      //测试程序需要的配置文件
    \pom.xml                //maven的配置文件,核心文件

POM文件

即Project Object Model项目对象模型。Maven把一个项目的结构和内容抽象为一个模型,在xml文件中进行声明,以方便进行构建和描述

<?xml version="1.0" encoding="UTF-8"?>
​
<!-- project是根标签,后面是约束文件 -->
<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">
    
         <!-- pom模型的版本,就是4.0.0 -->
         <modelVersion>4.0.0</modelVersion>
​
         <!-- 坐标 -->
         <groupId>com.pjh</groupId>
         <artifactId>01_maven</artifactId>
         <version>1.0-SNAPSHOT</version>
         <packaging>jar</packaging>
        
         <properties>
            <java.version>1.8</java.version>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
         </properties>
​
</project>

坐标

坐标组成:groupid,artifactid,version。

作用:确定资源,是资源的唯一标识。在maven中,每个资源都是坐标,坐标值是唯一的。简称gav

<!-- 坐标 -->
​
<!-- 
    groupId:组织名称,代号。公司,团体或单位的标识,这个值常使用公司的域名的倒写
    artifactId:项目名称,如果groupId中有项目,此时的值就是子项目名。项目名称唯一
    version:项目版本号,使用数字。三位组成:例如 主版本号.次版本号.小版本号
            后面可能携带-SNAPSHOT代表快照,表示不是稳定版本
    packaging:表示项目打包类型,由jar,war,ear,pom等等,默认为jar
-->
<groupId>com.pjh</groupId>
<artifactId>01_maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

项目使用gav:

  1. 每个项目都需要有一个自己的gav

  2. 管理依赖时,需要使用其他的jar,也需要用gav作为标识

搜索依赖的gav:

https://mvnrepository.com/ Maven仓库,可以在其中搜索所需依赖的gav

依赖 dependency

项目中需要使用的其他资源,常见的是jar。

使用Maven表示依赖,管理依赖。需要在pom.xml文件中,使用dependencies和dependency,还有gav完成依赖的说明

格式:

<!---->
<dependencies>
    
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.19</version>
    </dependency>
    
</dependencies>

maven使用gav作为标识,从互联网下载依赖的jar。下载到你的本机上。由maven管理项目使用这些jar

仓库

仓库是存放东西的,maven的仓库存放的是:

  1. maven工具自己的jar包

  2. 其他第三方的jar

  3. 自己写的程序,可以打包为jar存放在仓库

仓库分类:

  1. 本地仓库(本机仓库):位于自己的计算机,他是磁盘中的某个目录

    默认路径:在你C盘的users\用户名\.m2\repository目录下

    修改本地仓库的位置:修改maven配置文件(maven安装路径\conf\setting.xml)

    步骤:

    1. 创建一个目录作为仓库使用,目录不要由中文和空格

    2. 修改setting文件,在文件内添加

      <localRepository>D:/repository</localRepository> <!--自定义目录-->
  2. 私服:在局域网中使用,私服就是自己的仓库服务器。在公司内部使用

  3. 中央仓库

Maven生命周期,插件和命令

maven生命周期:项目构建的各个阶段。包括清理,编译,测试,报告,打包,安装,部署

插件:要完成构建项目的各个阶段,要使用maven的命令,执行命令的功能是通过插件完成的。插件就是jar,一些类。

命令:执行maven功能是由命令发出。比如mvn compile、

单元测试(junit)

junit是一个单元测试的工具,去测试方法是否完成了要求。开发人员自测

[单元]  在java中指方法。一个方法就是一个单元,方法是测试的最小单元。

使用:

  1. 加入junit的依赖

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
  2. 在src/test/java目录创建测试类文件,写测试代码

  3. 单元测试使用建议:

    1. 测试类定义,名称一般是Test+要测试的类名称

    2. 测试类包名和要测试的类包名一样

    3. 在类中定义方法,要测试代码

      方法定义:public方法,没有返回值,方法名称自定义,方法没有参数

    4. 在测试类中的方法,可以单独执行,测试类也可以单独执行

    5. 在测试方法上面要加上@Test

命令

  1. mvn clean:清理命令,作用是删除以前生成的数据,删除target目录

    插件:maven-clean-plugin

  2. mvn compile:编译命令,执行的代码编译,把src/main/java目录中的java代码编译为class文件,同时把class文件拷贝到target/classes目录中。这个目录是存放类文件的根目录

    插件:maven-compile-plugin(编译文件)

    maven-resources-plugin(拷贝文件)

  3. mvn test-compile:编译命令,编译src/test/java目录中的源文件,把生成的class拷贝到target/test-classes目录。同时把src/test/resources拷贝到test-classes目录

    插件:maven-compile-plugin(编译文件)

    maven-resources-plugin(拷贝文件)

  4. mvn test:测试命令,作用执行test-classes目录的程序,是否满足要求

  5. mvn package:打包,作用是把项目中的资源class文件和配置文件都放到一个压缩文件,默认压缩文件是jar类型的,web应用是war类型,拓展名是.jar,.war

    插件:maven-jar-plugin

    打包的文件包含的是src/main目录下的所有的生成的class和配置文件和test无关。

    生成的文件名称是你之前在pow.xml设置的gav,格式:artifactId-version.packaging

    例如:01_maven-1.0-SNAPSHOT.jar

  6. mvn install:把生成的打包文件,安装到仓库中

    插件:maven-install-plugin

    仓库的jar文件路径:

    <groupId>com.pjh</groupId>
    <artifactId>01_maven</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    ​
    <!--
    groupId中的值,如果有“.”前和后都是独立的文件夹。com\pjh
    artifactId,独立的文件夹
    version,独立文件夹
    -->
  7. mvn deploy:部署

自定义配置插件

<!--设置构建项目相关的内容-->

<build>
    <!--设置插件相关内容-->
	<plugins>
    	<plugin>
        	<groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source> <!--指定编译代码的jdk版本-->
                <target>1.8</target> <!--指定运行代码的jdk版本-->
            </configuration>
        </plugin>
    </plugins>
    
</build>

Maven和idea的集成

idea中继承maven

idea中有一个自带的maven。我们要让idea使用自己安装的maven。

  

VM Oprions:-DarcheTypeCatalog=internal

idea中创建maven项目

java项目:

  1. 创建普通java项目,选择的模板

     
  2. 设置gav坐标

  3. Next--》Finish

Web项目:

第一步选择模板改为

 

idea中使用maven插件

 

idea导入maven项目

 

依赖管理

依赖范围:使用scope表示依赖范围。表示这个依赖在项目构建的哪个阶段起作用

scope:

  1. compile:默认,参与构建项目的所有阶段

  2. test:测试,在测试阶段时使用,比如junit

  3. provided:提供者。项目在部署到服务器时,不需要提供这个依赖的jar,而是服务器提供依赖。常见如servlet和jsp

只有compile会一起打包

常用设置

properties里的设置

<properties>
    <!-- 项目构建使用的编码 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- 源码编译jdk版本 -->
    <maven.compiler.source>1.8</maven.compiler.source>
    <!-- 运行代码jdk版本 -->
    <maven.compiler.target>1.8</maven.compiler.target>
    <!-- 生成报告的编码 -->
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

定义全局变量

在properties定义标签,这个标签就是一个变量,标签的文本就是变量的值

使用全局变量表示多个依赖使用的版本号

使用方法:

  1. 在properties标签中定义一个标签,指定版本的值

    <properties>
        <!-- 项目构建使用的编码 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- 源码编译jdk版本 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <!-- 运行代码jdk版本 -->
        <maven.compiler.target>1.8</maven.compiler.target>
        <!-- 生成报告的编码 -->
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        
        <!-- 自定义变量 -->
        <spring.version>5.2.5.RELEASE</spring.version>
        <junit.version>4.11</junit.version>
    </properties>
  2. 使用自定义变量

    <version>${spring.version}</version>
  3. 使用资源插件

    处理的配置文件的信息,maven默认处理配置文件

    1. maven会把src/main/resources目录下的文件,拷贝到target/classes目录下

    2. maven只处理src/main/java目录中的java文件,把这些java文件编译为class,拷贝到target/classes目录中。不处理其他文件

    资源插件:告诉maven要处理哪些文件

    <build>
        <!--资源插件-->
    	<resources>
            <resource>
                <directory>src/java/main</directory><!--所在目录-->
                <includes>
                    <!--目录下的properties和xml文件都会被扫描到-->
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <!--不启用过滤器,*.preoperties已经起到过滤作用-->
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐