Maven基础知识
Maven是一个项目管理工具,基于项目对象模型(缩写:POM)概念,可以对java项目进行构建、依赖、报告管理。
约定配置
Maven使用约定优于配置的原则,提倡使用一个共同的标准目录结构,尽可能遵守这样的目录结构。如下所示:
目录 | 目的 |
---|---|
${basedir} | 存放pom.xml和所有子目录 |
${basedir}/src/main/java | 项目的java源代码 |
${basedir}/src/main/resources | 项目的资源,比如property文件,springmvc.xml |
${basedir}/src/test/java | 项目的测试类,比如junit代码 |
${basedir}/src/test/resources | 测试用的资源 |
${basedir}/src/main/webapp/WEB-INF | web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面 |
${basedir}/target | 打包输出目录 |
${basedir}/target/classes | 编译输出目录 |
${basedir}/target/test-classes | 测试编译输出目录 |
Test.java | Maven自会自动运行符合该命名规则的测试类 |
~/.m2/repository | Maven默认的本地仓库目录位置 |
Maven 特点
- 子项目使用父项目依赖时,正常情况子项目应该继承父项目依赖,无需使用版本号
Maven 环境配置
Maven是一基于java的工具,安装maven之前必须要安装JDK,这里以linux为例:linux的一般安装位置为:/usr/local/apache-maven-3.3.9, 安装之后设置环境变量,编辑/etc/profile文件,在文件末尾添加如下代码:
export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export PATH=${PATH}:${MAVEN_HOME}/bin
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m0gJLRRG-1653486635589)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210909154053850.png)]
保存文件,并运行如下命令使配置的环境变量生效:
source /etc/profile
然后输入以下命令检查maven相关版本信息,输出如下则代表已经安装成功:
mvn -v
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YPKVKqH4-1653486635590)(C:\Users\lele2019\AppData\Roaming\Typora\typora-user-images\image-20220525110721974.png)]
Maven POM
POM(Project Object Model,项目对象模型)是Maven工程的基本工作单元,是一个xml文件,包含了项目的基本信息。
执行任务或目标时,Maven会在当前目录中查找pom,读取pom,获取所需的配置信息,然后执行目标。POM中可以指定以下配置:
- 项目依赖
- 插件
- 执行目标
- 项目构建profile
- 项目版本
- 项目开发者列表
- 相关邮件列表信息
Maven POM
POM(Project Object Model,项目对象模型)定义了项目的基本信息,描述项目如何构建,声明项目依赖等。是maven工程的基本单元,是一个XML文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6BAQx6rC-1653486635592)(C:\Users\lele2019\AppData\Roaming\Typora\typora-user-images\image-20220525142526255.png)]
所有POM文件都需要project袁术和三个必需字段:groupId、artifactId、Version。
– 第一行开头指定了该xml文档的版本和编码方式。紧接着project元素,project是pom文件的根元素。
– modelVersion指定了当前POM模型的版本,对于Maven 2和Maven 3来说,它只能是4.0.0;
– 代码中最重要是包含了groupId,artifactId和version了。这三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jar、pom都是以基于这些基本的坐标进行区分的
– groupId定义了项目属于哪个组,这个一般使用组织或者公司的域名;比如谷歌公司的myapp项目,就取名为 com.google.myapp,myapp则是项目名称;
– artifactId定义了当前Maven项目在组中唯一的id,一般一个大项目可能会包含多个子项目或者模块,而artifactId就是子项目或者子模块的名称;
– version指定了项目当前的版本0.0.1-SNAPSHOT,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的。
– name元素声明了一个对于用户更友好的项目名称,所以推荐为每个POM声明name
在Maven种有一个约定,项目主代码位于 src/main/java目录,项目测试代码都位于src/test/java目录。
在java中,我们进行单元测试时,基本上都使用Junit,要使用Junit这个包,就要使用依赖包,需要在pom.xml中添加依赖内容:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
Maven常用命令说明
mvn clean:表示清理操作(会默认把target文件夹中的数据清理,删除target目录)
mvn clean compile:表示先运行清理,之后进行编译,会将代码编译到target文件夹中;maven构建的所有输出都在target目录中。
mvn clean test:运行清理和测试,调用junit进行单元测试
mvn clean package:运行清理和打包,maven默认达成jar包。
mvn clean install:运行清理和安装,将打好的包安装到本地仓库中
mvn clean deploy:运行清理和发布
it进行单元测试
mvn clean package:运行清理和打包,maven默认达成jar包。
mvn clean install:运行清理和安装,将打好的包安装到本地仓库中
mvn clean deploy:运行清理和发布