Maven 基础学习

功能

  1. maven可以管理jar文件
  2. 自动下载jar和jar的文档,源代码
  3. 管理jar直接的依赖,a.jar需要b.jar,maven会自动下载b.jar
  4. 管理你需要的jar版本
  5. 帮你编译程序,把java编译为class
  6. 帮你测试你的代码是否正确
  7. 帮你打包文件,形成jar文件,或者war文件
  8. 帮你部署项目

构建:项目的构建

构建是面向过程的,就是一些步骤,完成项目代码的编译,测试、运行、打包、部署等等。maven支持的构建包括有:

  1. 清理,把之前的项目编译的东西删除掉,我新的编译代码做准备。
  2. 编译,把程序源代码编译为可以执行的代码,java-class文件,批量的,maven可以同时把成千上百的文件编译为class.javac不一样,javac一次只能编译一个文件。
  3. 测试,maven可以执行测试程序代码,验证你的功能是否正确。批量的,maven同时执行多个测试代码,同时测试很多的功能。
  4. 报告,生成测试的结果文件,测试通过没有。
  5. 打包,把你的项目中所有的class文件,配置文件等所有资源放在一个压缩文件中。这个压缩文件就是项目的结果文件,通常java程序,压缩文件是jar扩展名的。对于web应用,压缩文件是.war
  6. 安装,把5中生成的文件jar,war安装到本机仓库。
  7. 部署,把程序安装好可以执行。

核心概念

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

安装和配置

前提:需要Java环境

  1. 下载maven
  2. 解压安装包
  3. 设置环境变量
  4. 验证安装是否成功 mvn -v

目录结构(类似于SpringBoot的目录结构)

每一个maven项目在磁盘中都是一个文件夹(项目Hello)

Hello/

-----/src

​ -----/main #放的你的主程序的java代码和配置文件都放在main文件中

​ -----/java #你的程序的包和包中程序的java文件

​ -----/resources #你的java程序中使用的配置文件

​ -----/test #放测试程序代码和文件的(可以没有)

​ -----/java #你的程序的包和包中程序的java文件

​ -----/resources #你的java程序中使用的配置文件

-----/pom.xml #maven的核心文件(maven项目必须有)

疑问 mvn compile 编译src/main目录下的所有java文件的。

1、为什么要下

​ maven工具执行的操作需要很多的插件(java类—jar文件)完成的

2、下载什么东西

jar文件—叫做插件—插件是完成某些功能的

3、下载的东西存放在哪里了

默认仓库:在C 用户下的admin下的.m2中有一个仓库地址

执行结果

执行mvn compile,结果是在项目目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中

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

配置本地仓库

  1. 修改maven的配置文件,maven安装目录下的/conf/setting.xml
  2. 先备份setting.xml
  3. 修改localRepository来指定你的目录(不要使用中文目录)
 <!-- 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>D://Java//repository</localRepository>
 <!-- interactiveMode
  | This will determine whether maven prompts you when it needs input. If set to false,
  | maven will use a sensible default value, perhaps based on some other setting, for
  | the parameter in question.
  |
  | Default: true
 <interactiveMode>true</interactiveMode>
 -->

仓库

仓库是什么
  1. 存放maven使用的jar包/插件
  2. 项目使用的jar(第三方的工具jar)
仓库的分类
  1. 本地仓库:个人计算机上的一个文件夹,存放各种jar包
  2. 远程仓库:在互联网上的,使用网络才能使用的仓库
    1. 中央仓库:最权威的,所有的开发人员共享使用的集中的仓库:https://repo.maven.apache.org
    2. 中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都有镜像。
    3. 私服,在公司的内部局域网中使用的,不是对外使用的。
POM项目对象模型

搜索使用中央仓库:www.mvnrepository.com

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>//maven的项目版本
    
    //项目的坐标:唯一的标识一个项目:可以在互联网上找到本项目

    <groupId>com.example</groupId>   	//一般为公司名:公司域名的倒写 com.baidu.appolo
    <artifactId>demo1</artifactId>   	//项目的名称:自定义的
    <version>0.0.1-SNAPSHOT</version>	//项目的版本号:自定义的版本号
    
    <packaging>jar</packaging>			//打包后项目压缩文件的扩展名 默认为jar web为war,可以不写。
    
    //配置的属性
    <properties>
        <java.version>1.8</java.version> 	//jdk的版本
		<maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
	</properties>
    
    //项目中的依赖管理
    <dependencies>
        //具体的依赖
        <dependency>
            //依赖的坐标
        	<groupId>mysql</groupId>   	
    		<artifactId>mysql-connector-java</artifactId>   	
    		<version>5.1.9</version>
        </dependency>
        //单元测试的依赖
        <dependency>        
        	<groupId>junit</groupId>   	
    		<artifactId>junit</artifactId>   	
    		<version>4.11</version>
			<scope>test</scope>
        </dependency>
    </dependencies> 		
    
    <build></build>    			//maven在进行项目构建的配置信息,比如jdk的版本等
    <parent></parent>			//继承
    <modules></modules>			//聚合
</project>
生命周期:编译、打包等过程
  1. 生命周期由命令完成,maven执行时,真正完成功能就是插件,jar文件(一些类) 命令通过插件完成。
命令
  1. mvn clean:清理之前编译过的文件
  2. mvn compile:编译主程序
    1. 编译main/java目录下的java为class文件,同时把class拷贝到target/classes目录下
    2. 把main/resouces目录下的所有文件都拷贝到target/classes目录下
    3. 到这里不能保证代码正确
  3. mvn test-compile:编译测试程序、
  4. mvn test:测试
  5. mvn package:打包主程序
  6. mvn install:安装主程序
  7. mvn deploy:部署主程序
单元测试: 用的是junit,junit是一个专门测试的框架(工具)

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

maven是借助单元测试来批量测试类中的大量方法是否是符合预期的。

  1. 加入依赖,在pom.xml中加入单元测试的依赖

  2. 在maven项目中src/test/java目录下,创建测试程序

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

    1. 测试类的名称,是Test+你要测试的类名
    2. 测试的方法名称,是 Test+方法名称

    例如:测试HelloMaven创建测试类 TestHelloMaven

    @Test
    public void testAdd(){
        测试HelloMavenAdd方法是否正确
    }
    其中testAdd叫做测试方法,他的定义规则
        1.方法是public的,必须的
        2.方法没有返回值,必须的
        3.方法的名称是自定义的,推荐Test+方法名称
        4.在方法上加上@Test注解
    
测试命令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值