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使用
注意:
测试方法是可以独立运行的
测试方法没有参数和返回值
依赖:文章来源:https://www.toymoban.com/news/detail-541042.html
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
注解【方法名上】:
@Test:声明测试方法
@Before:方法会在测试方法之前自动执行
@After:方法会在测试方法执行之后自动执行
文章来源地址https://www.toymoban.com/news/detail-541042.html
到了这里,关于maven详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!