从零开始学Maven:打造专业的Java开发环境

发布于:2024-04-08 ⋅ 阅读:(180) ⋅ 点赞:(0)

Maven:在美国是一个口语化的词语,代表专家、内行的意思。
Maven是一个项目管理工具。可以构建工程,管理jar包,编译代码,自动运行单元测试,打包生成报表,甚至部署项目,生成web站点。

Maven作用:
  • 依赖管理:管理Jar包的过程
  • 一键构建:指项目从编译、测试、运行、打包、安装、部署等一系列过程。
Maven的仓库分类:
  • 本地仓库:存储从远程仓库下载下来的jar包,项目使用的jar包优先从本地仓库查找。
  • 远程仓库:可以在局域网内,也可以在互联网,如果本地仓库需要jar包,本地仓库没有,幕刃去远程仓库下载。
  • 中央仓库:在Maven中内置了一个远程仓库地址 http://repo1.maven.org/maven2,他是中央仓库,服务于整个互联网,由Maven团队自己维护,里面存储了非常全的jar包,包含了世界上大部分流行的开源项目软件
Maven常用的命令:
  • clean:清理命令,执行clean会删除target目录及内容。
  • compile:编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下。
  • test:测试命令,会执行/src/test/java下的单元测试类。
  • package:打包命令,对于Java工程打jar包,对于web工程打war包
  • install:安装命令,将maven打jar包或者war包发布到本地仓库。当后面的命令执行时,前面的操作过程也都会自动执行。
Maven指令的生命周期:

maven对项目的构建过程分为三套相互独立的生命周期分别是:

  • Clean Lifecycle 清理周期
  • Default Lifecycle 构建的核心部分:编译、测试、打包、部署等
  • Site Lifecycle 生成项目报告,站点,发布站点
Maven的概念模型:

maven包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependcy Management System),和用来运行在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

  • 项目对象模型(Project Object Model):一个maven工程都有一个pom.xml文件,通过pom.xml文件定义项目的坐标、项目依赖、项目信息、项目插件目标等。
  • 依赖管理系统(Dependcy Management System):通过maven的依赖管理对项目所依赖的jar包进行统一管理。
  • 一个项目生命周期(Project Lifecycle):使用maven完成项目构建,项目的构建包括:清理、编译、测试、部署等过程,maven将这些过程规范为一个生命周期。
  • 一组标准集合:maven将整个项目管理过程定义一组标准,如:通过maven构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等。
  • 插件(plugin)目标(goal):maven管理项目的生命周期过程都是基于插件完成的。
坐标来源的方式:

https://mvnrepository.com
https://search.maven.org

依赖范围:

项目A依赖项目B,需要在项目A中的pom.xml添加B的坐标,添加坐标时需要指定依赖范围,依赖范围包括:

  • compile:编译范围,指A在编译时依赖B,此范围时默认依赖范围。会用在编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
  • provided:只有在当Java或者一个容器已提供该依赖之后才使用,在编译测试时需要,运行时不需要,如:servlet api 被Tomcat容器提供。
  • runtime:在运行和测试时需要,在编译时不需要,如jdbc驱动包,由于运行时需要所以runtime范围的依赖会被打包。
  • test:在编译运行时都不需要,只有在测试编译和测试运行时可用,如Junit,由于运行时不需要所以test范围依赖不会被打包。
  • system:与provided类似,但必须提供一个对于本地系统中jar文件的路径,需要指定systemPath磁盘路径,system依赖不推荐使用。

依赖范围有强到弱:compile > provided > runtime > test

pom基本配置

pom.xml是Maven项目的核心配置文件,位于每个工程的根目录,基本配置如下:

<project>:文件根节点
<modelVersion>:pom.xml使用的对象模型版本
<groupId>:项目名称,一般写项目的域名
<artifactId>:模块名称,子项目名或模块名称
<version>:产品的版本号
<packaging>:打包类型 一般有 jar war pom
<name>:项目的显示名,常用于Maven生成的文档
<description>:项目描述,常用于Maven生成的文档
<dependencies>:项目依赖构建配置,配置项目依赖构建的坐标
<build>:项目构建配置,配置编译、运行插件等。

总结:

Maven的好处:
  • 节省磁盘空间
  • 可以一键构建
  • 可以跨平台
  • 应用在大型项目时可以提高开发效率
仓库:

本地仓库,远程仓库(私服),中央仓库

常见命令:

compile,test,package,install,deploy,clean

坐标书写规范:

groupId 公司或组织域名的倒叙
artifactId 项目名或模块名
version 版本号

如何添加坐标:
依赖范围:

compile,test,runtime,provided


网站公告

今日签到

点亮在社区的每一天
去签到