maven详解

Maven详解

基本概念

简介

Maven是一个项目管理工具。它可以帮助程序员构建工程,管理jar包,编译代码,完成测试,项目打包等等
Maven工具是基于POM(Project Object Model,项目对象模型)实现的,在Maven的管理下每个项目都相当于是一个对象
Maven提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库
Maven标准化了项目的构建,即对项目结构,构建命令等进行了标准化定义
Maven是跨平台的,在Windows、Linux、Mac上,都可以使用同样的命令

maven目录结构

bin:存放maven的命令
boot:存放maven本身的引导程序,如类加载器等
conf:存放maven的配置文件
lib:存放maven本身运行所需的jar包

Maven仓库类型

本地仓库:
本地仓库指用户计算机中的文件夹。用来存储从远程仓库或中央仓库下载的jar包,
只有下载到本地仓库的jar包才能使用,项目使用jar包时优先从本地仓库查找

远程仓库:
远程仓库一般指私服,它是架设在局域网的仓库服务,可以从中央仓库下载资源,
供局域网使用,从而减少每个程序员都从中央仓库下载浪费的带宽

中央仓库:
中央仓库是互联网上的服务器,是Maven提供的最大的仓库,里面拥有最全的jar包资源
中央仓库访问速度较慢,我们一般都会配置镜像代理中央仓库的下载请求,如阿里镜像、华为镜像等
Maven中央仓库访问https://mvnrepository.com/

如果项目需要的jar包本地仓库没有,则会去远程仓库下载,下载到本地仓库即可使用
远程仓库不是必须配置的,如果本地仓库没有jar包,也没有配置远程仓库,则会直接从中央仓库下载
        

安装

下载

maven下载地址https://maven.apache.org/download.cgi

选择Download/选择Binary zip archive/Link坐标那个下载

配置环境变量

前提:配置java的环境变量(Maven是由Java语言开发的,运行时依赖Java环境)
MAVEN_HOME  路径(如D:\Autils2\maven3.8.3\apache-maven-3.8.3)
path中添加  %MAVEN_HOME%\bin

查看版本

打开CMD命令窗口,输入mvn -v,显示Maven版本和Java版本,证明安装成功

配置文件

配置本地仓库

<localRepository>F://repository</localRepository>

配置中央仓库镜像

<mirror>
    <!-- 指定镜像ID -->
    <id>nexus-aliyun</id>
    <!-- 匹配中央仓库。-->
    <mirrorOf>central</mirrorOf>
    <!-- 指定镜像名称 -->
    <name>Nexus aliyun</name>
    <!-- 指定镜像路径 -->
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

配置JDK版本

创建maven项目的时候,默认使用的JDK是1.5版本,验证语法、编译、运行时都会按照JDK1.5操作,这样就有很多语法无法使用

<profile>
    <id>jdk11</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>11
    </activation>
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
    </properties>
</profile>


        

Maven工程

maven项目工程

maven工程类型

POM工程:POM工程是逻辑工程,用来整合其他工程的
JAR工程:普通Java工程,在打包时会将项目打成jar包
WAR工程:JAVA Web工程,在打包时会将项目打成war包

maven工程结构

文件目录结构:
src:源代码
target:编译生成的文件
pom.xml:Maven工程配置文件,如坐标信息等

项目结构:
src/main/java:存放项目的java 文件
src/main/resources:存放项目资源文件,如配置文件
src/test/java:存放项目的测试文件
src/test/resources:存放测试时的资源文件

项目构建的生命周期

maven有三套相互独立的生命周期:构建生命周期、clean生命周期(清理构建后的文件)、site生命周期(生成项目报告)
作为开发人员我们一般重点学习构建生命周期即可

验证 validate    验证项目是否正确
编译 compile    源代码编译
测试 Test    使用适当的单元测试框架(例如junit)运行测试。
打包 package    创建JAR/WAR包
检查 verify    对集成测试的结果进行检查,以保证质量达标。
安装 install    安装打包的项目到本地仓库,以供其他项目使用。
部署 deploy    拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

Maven常用命令

注意:Maven依赖插件来执行命令,比如clean、validate等命令是maven自带的,tomcat7命令是引入的第三方插件
mvn clean    清除编译的class文件,即删除target目录。
mvn validate    验证项目是否正确
mvn compile    编译maven项目
mvn test    编译maven项目及运行测试文件
mvn package    编译maven项目及运行测试文件,并打包
mvn install    编译maven项目及运行测试文件并打包,并发布到本地仓库
mvn deploy    部署项目到远程仓库
mvn tomcat7:run    使用tomcat运行项目
        

Maven工程开发

pom文件配置

groupId:定义项目组名,命名规则使用反向域名
artifactId:定义项目名,命名使用小写字母
version:定义版本号。版本号一般有三段,第一段:革命性的产品升级/第二段:新功能版本/第三段:修正一些bug
packaging:定义打包方式

properties:定义一些配置信息:

dependencies:中定义依赖的jar包坐标:
查找依赖坐标的网站https://mvnrepository.com/

plugins:定义第三方插件

依赖范围

通过在dependency中添加scope,可以设置依赖的作用范围:
compile:默认范围。表示该依赖在编译和运行时生效,项目打包时也会将该依赖打包进去
provided:使用此依赖范围的Maven依赖,编译和测试时有效,但在运行时无效
runtime:编译时不需要生效,只在运行时生效
test:只在编译和运行测试代码的时生效,程序的正常运行不需要此类依赖
system:如果有些你依赖的jar包没有Maven坐标的,它完全不在Maven体系中,
这时候你可以把它下载到本地硬盘,然后通过system来引用(不推荐使用)
        

Maven工程测试

测试方法

黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值
白盒测试:需要写代码的。关注程序具体的执行流程
单元测试:是指对软件中的最小可测试单元进行检查和验证,Java里单元测试指一个类的功能

Junit使用

注意:
测试方法是可以独立运行的
测试方法没有参数和返回值

依赖:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>



注解【方法名上】:
@Test:声明测试方法
@Before:方法会在测试方法之前自动执行
@After:方法会在测试方法执行之后自动执行
          

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月木@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值