零基础手把手教你如何使用Maven搭建管理项目

零基础手把手教你如何使用Maven搭建管理项目

Maven的了解

项目的构建

构建是面向过程的,就是一些步骤,完成项目的编译、测试、运行、打包、部署等。

maven支持的构建包括:

  1. 清理:把之前的项目编译的东西删除调,为新的编译代码做准备。

  2. 编译:把程序的源代码编译成执行代码,批量的。maven可以把成千上万个文件编译成class

  3. 测试:可以批量执行多个测试,同时测试很多功能。

  4. 报告:生成测试结果文件。

  5. 打包:测试通过后所有的class文件和配置文件放到一个压缩文件中,就是项目的结果文件,通常java程序压缩文 件是jar

    ​ web应用是.war文件。

  6. 安装:把5中的文件jar,war安装到本机仓库。

  7. 部署:把程序安装好可以执行。

核心概念

  1. POM:一个文件,名称是pom.xml,maven把一个项目当作模型使用。
  2. 约定的目录结构:maven项目的目录和文件的位置都是固定的。
  3. 坐标:是一个唯一的字符串,用来表示资源。
  4. 依赖管理:管理项目中可用的jar文件
  5. 仓库管理(了解):资源存放的位置。
  6. 生命周期(了解):构建项目的过程,就是声明周期。
  7. 插件和目标(了解):执行maven时候使用的工具就是插件。
  8. 继承
  9. 聚合

安装

如果直接使用IDEA可以忽略!

  1. 官网下载:https://maven.apache.org/download.cgi

image-20220314203135394

  1. 解压并添加环境变量

    M2_HOME = 解压后的项目

    再把M2_HOME加入到Path中

image-20220314203347415

image-20220314203416898

  1. 验证

image-20220314203446084

Maven的使用

约定的目录结构

约定是大家都遵循的规则,每一个maven项目在磁盘上都是文件夹。

Hello/
-----/src
---------/main           #放置主程序java代码和配置文件
--------------/java      #程序包和包中的Java文件
--------------/resources #java程序中需要的配置文件

---------/test           #放测试程序代码和文件(可以没有)
--------------/java      #程序程序包和包中的Java文件
--------------/resources #测试java程序中需要的配置文件
------/pom.xml           #maven的核心文件,maven项目必须有

仓库

设置本机仓库:

  1. 修改maven的配置文件,maven的安装目录/conf/settings.xml(先备份settings.xml)
  2. 修改<localRepository>指定你的目录,不要使用中文目录

仓库的分类:

  1. 本地仓库:就是你的个人计算机上的一个文件夹存放各种jar包

  2. 远程仓库:在互联网上要使用网络下载才能进行使用

    ①中央仓库:最权威,所有开发人员共享使用的地址。

    ②中央仓库镜像:中央仓库的备份,会首先访问。

    ③私服:在局域网中使用的,不是对外使用的。

POM文件

基本信息

  • modelVersion:Maven的版本,对于Maven2和3来说,只能是4.0.0
  • groupId:组织id,一般是公司名的倒写,格式可以是
    1. 域名倒写:例如com.baidu
    2. 域名倒写+项目名。例如:com.baidu.applo
  • artifactId:项目名称,也就是模块名称,对应groupId中的子项目
  • version:项目的版本号,如果项目还在开发中,是不稳定版本,通常在版本后面带–SNAPSHOT,version使用三位数字标识,比如1.0.0

通过groupId、artifactId、version构成了一个坐标值。

  • packaging:项目的打包类型,可以是jar,war,rar,ear,pom默认是jar
  • dependencies和dependency(依赖):项目中要使用的资源说明,相当于import
  • properties:配置属性
  • build:表示与构建相关的配置,例如编译插件的jdk版本
  • parent:继承
  • modules:聚合

单元测试

用的是junit,是一个专门测试的框架(工具)

junit的测试内容:测试是类中的方法,每一个方法都是独立测试的,方法是测试的基本单元。

步骤:

  1. 加入依赖
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
  1. 在maven项目下的src/test/java目录下,创建测试程序

    推荐的创建类和方法的提示:

    1. 测试类的名称:Test + 要测试的类名
    2. 测试方法的名称:Test + 要测试的方法名称

    例如测试Hellomaven,创建测试类TestHelloMaven

@Test
public void testAdd(){
    //测试结果是否正确
}

其中testAdd为测试方法,它的定义规则:

  1. 方法是public的,必须的
  2. 方法没有返回值,必须的
  3. 方法名称是自定义的,推荐是Test+被测试方法
  4. 方法的上面加@Test

命令的使用

  • mvn clean :清理(会删除原来编译和测试的目录,也就是target目录,但是已经完成install到仓库里的包不会删除)
  • mvn compile:编译主程序(会在当前目录下面生成一个target,里面存放着编译主程序后的字节码文件)
  • mvn test-compile:编译测试文件(会在当前目录下面生成一个target,里面存放编译测试程序之后生成的字节码文件)
  • mvn test:测试,会生成一个目录,surefire-reports,保存测试结果
  • mvn package:打包主程序(会编译、编译测试、测试并按照配置文件把主程序打包成jar包或者war包)
  • mvn install:安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库当中)
  • mvn deploy:部署主程序。

注意:执行以上命令必须要在命令行进入pom.xml所在的目录。

插件的配置

可以去Maven的仓库下载!

image-20220315005223828

IDEA中应用Maven(必会)

前面的当作了解的话,那么下面的一定要掌握,因为在项目开发中会经常使用到的!

IDEA中集成Maven

  1. 在idea中设置maven,让idea和maven结合使用

    idea中内置了maven,但是不建议使用,因为内置的修改maven设置很不方便。

    使用自己安装的,覆盖原来的配置。

配置当前工程:

image-20220315012834653

注意:图片中要改成:-DarchetypeCatalog=internal才有有效!!!!

image-20220315012509878

注意:创建项目要是失败报错:Process terminated,就去掉archetypeCatalog=internal这句话,重新新建项目就好啦!

或者图片中要改成:-DarchetypeCatalog=internal才有有效!!!!

image-20220315012638173

配置新建的所有工程:

IDEA的版本不一样,入口也不太一样,可以自己摸索摸索!

image-20220315013148320

使用模板创建SE项目

  1. 选择创建maven项目,勾选creat from archetype,选择quickstart

image-20220315151834036

  1. 输入项目名

image-20220315151935369

  1. 检查和填写项目信息

image-20220315152111106

  1. 创建项目要是失败报错:Process terminated就去掉maven中runner的archeTypeCatalog=internal这句话,重新新建项目就好啦!

image-20220315191624929

使用单元测试
  1. pom文件最终样子
<?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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.liang</groupId>
  <artifactId>maven_01</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>maven_01</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  
  <properties>
    <!--构建项目使用utf-8-->
    <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>
  </properties>

  <!--依赖-->
  <dependencies>
    <!--单元测试-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  
</project>
  1. 编写测试类
package org.liang;

/**
 * @author liang
 * @date 编写日期: 2022/3/15 20:35
 */
public class HelloMaven {

    public int add(int n1,int n2){
        return n1+n2;
    }


    public static void main(String[] args) {
        HelloMaven helloMaven = new HelloMaven();
        int res =  helloMaven.add(12,20);
        System.out.println("10+20="+res);
    }
}
  1. 测试如果报错:“Error:(3, 24) java: 程序包org.junit不存在”

image-20220315203934866

可以参考以下文章进行解决:

https://blog.csdn.net/magcfield/article/details/107793814

  1. 测试成功

image-20220315204337323

使用IDEA中的Maven窗口
写测试类
package org.liang;

import org.junit.Assert;
import org.junit.Test;

/**
 * @author liang
 * @date 编写日期: 2022/3/15 20:48
 */
public class TestHelloMAven {

    @Test
    public void testAdd(){
        HelloMaven hello = new HelloMaven();
        int res = hello.add(10,20);

        //判断结果是否正确
        Assert.assertEquals(30,res);

    }
}
  1. 窗口

image-20220315205631403

使用IDEA创建WEB项目

  1. 选择webapp工程

image-20220315235709411

  1. 其他的一样
  2. 导入依赖就可以些项目啦

image-20220316000526586

  1. 项目完成后可以使用右侧的maven窗口package命令打包

其他了解

依赖使用范围

使用scope表示,表示在构建项目的哪些阶段起作用。

scope的值有:compile、test、provide,默认是compile!!!

image-20220316003927534

常用操作

  1. 属性设置
  <properties>
    <!--构建项目使用utf-8-->
    <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>
  </properties>
  1. 全局变量

自定义属性:1. 在<properties>中,通过自定义标签声明变量。

​ 2. 在pom.xml文件中的其他位置,使用${标签名}使用变量的值

自定义全局变量一般是定义依赖的版本号,当你的项目中要使用多个相同的版本号,先使用全局变量,再使用${变量名}

<junit.version>5.2.0</junit.version>

<!--依赖-->
  <dependencies>
    <!--单元测试-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  1. 资源插件
  • 默认没有使用resources的时候,maven执行代码的时候会自动把>src/main/resources中的文件拷贝到target/classes的目录下面。

  • 对于src/main/java目录下的非java文件不处理,不拷贝到target/classes的目录下面

  • 如果需要处理src/main/java目录下的文件,需要在<build>中加入<resources>中

image-20220316010457539

<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>

image-20220316012526131

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值