Maven详细整理

三层架构

在这里插入图片描述

目前的技术存在的问题

  1. 一个项目就是一个工程
    • 项目过大,就不适合用package来划分模块
    • 借助于Maven就可以将一个项目划分为多个工程
  2. 项目中需要的jar包必须手动“复制”,”粘贴“到WEB-INF/lib目录下
    • 同样的jar包出现在不同的项目中,浪费空间也比较臃肿
    • 借助Maven可以将jar包保存在“仓库中”,有需要的工程可以“引用"这个文件接口
  3. jar包需要别人替我们准备好,或者在官网下载
    • 有些技术的官网就是通过Maven或SVN等专门的工具来提供下载
    • 有时候下载的jar包是不规范的
    • 借助Maven可以规范的下载jar包,所有的知名框架都在存放在Maven的中央仓库中
  4. 一个jar包依赖的其它jar包也需要自己手动加入到项目中
    • 如果所有的jar包之间的依赖都需要我们了解,那就工作量极大

Maven是什么

  • Maven是一款服务于Java平台的自动化构建工具
  • 自动管理jar文件
  • 自动下载一个jar包依赖的jar包
  • 总之可以解决上面的问题

构建

构建就是一些步骤,完成项目代码的编译,测试,运行,打包,部署

  1. 清理:把之前项目变异的东西删除掉,为新的编译代码做准备
  2. 编译:把程序源文件编译为执行文件,java–>class文件(批量的)
  3. 测试:可以执行程序代码,验证功能是否正确(批量的)
  4. 报告:生成测试结果的文件
  5. 打包:把所有的class文件,配置文件压缩到一个压缩包中,java程序文件的压缩文件是.jar扩展名的;web文件压缩文件是.war扩展名
  6. 安装:把jar,war 文件安装到本机仓库

核心概念

  1. POM:一个文件,pom.xml,项目对象模型
  2. 约定的目录结构:Maven项目的目录和文件的位置都是规定的
  3. 坐标:是一个唯一的字符串,用来表示资源的
  4. 依赖管理:管理项目可以使用jar文件
  5. 仓库管理:存放资源
  6. 生命周期:构建项目的过程
  7. 插件和目标:执行Maven构建的时候用的工具是插件

安装

  • 下载地址:http://maven.apache.org/download.cgi
  • 配置环境变量
    • M2_HOME=E:\MavenProject\Maven\apache-maven-3.6\apache-maven-3.6.3
    • M2_HOME变量加到Path之中,%M2_HOME%\bin;
    • 注意,要是JAVA_HOME环境变量没有配置好,会出错,要配置jdk
  • 测试
    • cmd窗口输入mvn -v命令
  • 默认下载到的地址
    • 默认仓库:C:\Users\DELL\.m2\repository
  • pom.xml所在目录在命令行窗口输入命令 mvn compile,进行下载

仓库分类

  • maven 的插件(jar包)
  • 第三方jar 包

  • 本地仓库
  • 远程仓库(互联网上的)
    • 中央仓库 https://repo.maven.apache.org
    • 中央仓库镜像(重要城市)
    • 私服(公司内部)

使用:本机–>私服–>镜像–>中央仓库

Maven约定的目录结构

  • src
    • main :主程序java代码和配置文件
      • java: 包和包中的java文件
      • resourcesjava程序要使用的配置文件
    • test 测试程序代码
      • java: 测试程序包和包中的java文件
      • resourcesjava程序要使用的配置文件
  • pom.xmlMaven的核心文件(必须的)

测试

新建一个上面的目录,并新建一个java文件,编译之后在项目目录下生成一个targer/classes目录,java文件编译之后就会在这个目录下生成class文件

package com.atgw;/*
 *  @author GaoWei
 *  Date  2021/1/22--19:53
 */

public class HelloMaven {

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

    public static void main(String[] args) {
        HelloMaven hello = new HelloMaven();
        int res = hello.add(10,20);
        System.out.println("10+20="+res);
    }
}

在class目录下进入cmd命令,输入下面的命令执行上面的程序

java com.atgw.HelloMaven

设置本机存放资源的目录位置

  1. 修改Maven的配置文件

    • maven安装目录/conf/settings.xml
    • 备份settings.xml
  2. settings.xml中修改为E:\MavenProject\Maven\maven_repository(不要出现中文)

      <!-- localRepository
       | The path to the local repository maven will use to store artifacts.
       |
       | Default: ${user.home}/.m2/repository
      <localRepository>/path/to/local/repo</localRepository>
      -->
    
    <!--配置本地仓库位置-->
    <localRepository>E:/MavenProject/Maven/maven_repository</localRepository>
    

pom.xml文件

坐标

在此网址查找坐标 https://mvnrepository.com/

modelVersion版本 4.0.0
groupId组织id,一般是公司域名的反写(com.baidu)
artifactId项目名
version项目版本号
packaging打包压缩之后的类型(jar,war等)

groupIdartifactIdversion总称为坐标(唯一)

	<groupId>com.atgw</groupId>
	<artifactId>Hello</artifactId>
	<version>0.0.1-SNAPSHOT</version>

依赖

根据下面的坐标在本地仓库中查询相关资源,也就是把 jar 包引用到项目中

<dependencies>
    <dependency>
		<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${atguigu.spring.version}</version>
	</dependency>
</dependencies>
  • properties:设置属性
  • build:与构建相关的配置

生命周期,命令,插件

生命周期

  • 构建项目的过程
  • 清理
  • 编译
  • 测试
  • 报告
  • 打包
  • 安装
  • 部署

使用命令对上面的生命周期进行执行

命令执行时,真正执行的是插件(jar包,类文件)

常用命令

mvn clean清除之前编译和测试产生的目录
mvn compile编译主程序
编译main/java/目录下的java文件为class文件,同时把class文件拷贝到target/classes目录下面
main/resources目录下的所有文件都拷贝到target/classes目录下
mvn test-compile编译测试程序
mvn test执行测试代码(不用提前编译,会自动把之前的命令过程都执行)
mvn package打包主程序
mvn install把之前打包的文件安装到本地仓库中

IDEA中使用

下面的链接详细描述了创建普通项目和web项目的过程

http://www.cnblogs.com/wql025/p/5215570.html


  • idea中内置了maven,但是一般不使用内置的,因为内置的修改maven设置不方便

  • 使用自己安装的maven,需要覆盖idea中默认的设置,让idea指定maven安装位置等信息

配置的入口

  1. 配置当前工程 settings
  2. 之后新建工程 other settings

在这里插入图片描述

在这里插入图片描述

创建se模块

在这里插入图片描述

在这里插入图片描述

使用技巧

在这里插入图片描述

pom.xml文件刷新

有时候在pom文件配置之后,由于没有刷新而导致会出现红色提示线

  • 单个工程刷新

在这里插入图片描述

  • 全部工程刷新

在这里插入图片描述

设置文件类型

在这里插入图片描述

导入模块

在这里插入图片描述

在这里插入图片描述


依赖范围

表示在maven构建项目的哪些阶段起作用

  • 标签
<!--表示junit只在测试阶段起作用-->    
<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
testcompile(默认)
所有用到的jar包需要自己带
provided
如果有,就不用自己带
对主程序是否有效
对测试程序是否有效
是否参与打包
是否参与部署

常用操作

属性设置

    <properties>
        <!--maven构建项目使用编码,避免中文乱码-->
        <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>

全局变量

<properties>
	<!--自定义变量-->
    <spring-vision>5.2.2</spring-vision>
</properties>
  • 定义之后,在下面的值引用时${spring-vision}

资源插件

  • 默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录中的文件拷贝到target/classes目录中;对于src/main/java目录下的非java文件不处理,不拷贝到target/classes目录中

  • 我们的程序需要把一些文件放在src/main/java目录中,当我们执行java程序时,需要用到src/main/java目录中的文件(比如properties配置文件)。需要告诉mavenmvn compile src/mian/java目录下的文件时,需要把文件一同拷贝到target/classes目录中,此时需要在中配置

  •     <build>
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes><!--目录下的 .properties, .xml文件都会扫描到-->
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <!--filtering = false 表示不启用过滤器,,.*properties已经起到过滤的作用了-->
                    <filtering>false</filtering>
                </resource>
            </resources>
        </build>
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值