Maven
apache下的一个开源项目,是一款用于管理和构建Java项目的工具
安装前请先安装jdk
- 依赖管理:方便快捷管理项目依赖的资源,避免版本冲突;
- 项目构建:标准跨平台(linux,windows,macos)的自动化项目构建方式;
- 统一项目结构:提供标准,统一项目结构(eclipse/myeclipse 10 / intellij IDEA);
目录 | 级别 | 说明 |
---|---|---|
main | 1 | 实际的项目资源 |
java | 2 | java源代码目录 |
resources | 2 | 配置文件目录 |
test | 1 | 测试项目资源 |
java | 2 | 测试java源代码目录 |
resources | 2 | 测试配置文件目录(构建有时不存在,需自己创建) |
pom.xml | 1 | 项目的配置文件 |
仓库
用于存储资源,管理各种jar包。POM项目对象模型;Dependency依赖管理模型
- 本地仓库:自己计算机的一个目录。
- 中央仓库:有Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/
- 远程仓库(私服):一般由公司搭建的私有仓库。
安装
- 解压apache-maven-3.6.1-bin.zip。
- 配置本地仓库:修改conf/setting.xml中的为一个指定目录。
- 配置阿里云私服:修改conf/setting.xml中的标签,为其添加如下子标签:
<localRepository>D:\...\mvn_repo</localRepository>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
4、配置环境变量:MAVEN_HOMW为maven的解压目录,并将其bin目录加入PATH环境变量。
5、测试 cmd 运行mvn-v
配置Maven环境(当前工程)
IDEA:file–>settings—>build,execution,deployment–>build tools—>maven
Maven home path:安装路径
User setting file: 配置文件路径 settings.xml
Maven—> runner 修改版本
build tools —> compiler–> java compiler 修改版本
设置IDEA使用本地安装的Maven,并修改配置文件及本地仓库路径。
配置Maven环境(全局)
IDEA:首页–>Customize—>All setting—>build,execution,deployment–>build tools—>maven
Maven home path:安装路径
User setting file: 配置文件路径 settings.xml
Maven—> runner 修改版本
build tools —> compiler–> java compiler 修改版本
设置IDEA使用本地安装的Maven,并修改配置文件及本地仓库路径。
IDEA创建Maven项目
IDEA安装 jetbrains.com/idea/
1、创建模块,选择Maven,点击next
2、添加模块名称,坐标信息,点击finish,创建完成
3、编写HelloWorld,并运行
Maven坐标:资源的唯一标识,通过该坐标可以唯一定位资源位置;使用坐标定义项目或引入项目中需要的依赖。
Maven坐标的主要组成部分: GroupId、ArtifactId、Version
IDEA2023以上版本
new project–>name项目名称 /build system选择maven/advanced settings(设置组织名、模块名)
标题 | 说明 | 详情说明 |
---|---|---|
Name | 模块名称 | 模块名称 |
Location | 模块存放路径 | 模块存放路径 |
GroupId | 组织名 | 定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.hui) |
ArtifactId | 模块名 | 定义当前Maven项目名称(通常是模块名称,例如order-service、goods-service) |
Version | 版本号 | 定义当前版本号 |
<dependency>
<groupId>[GROUP_ID]</groupId>
<artifactId>[ARTIFACT_ID]</artifactId>
<version>[VERSION]</version>
</dependency>
IDEA导入项目
方式1
1、打开IDEA,选择右侧的Maven面板,点击+号,选择对应的pom.xml文件,双击即可。
2、maven面板展示:view—>Appearance—>Tool Window Bars。
方式2
1、打开IDEA,点击File—>Project Structure—>Modules—>+号---->Import Module---->选择对应的pom.xml文件,点击ok。
maven坐标
- 是资源的唯一标识,通过该坐标可以唯一定位资源位置
- 使用坐标来定义项目或者引入项目中需要的依赖
依赖配置
依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖
配置
1、在pom.xml中编写标签
2、在标签中,使用引入坐标
3、定义坐标的groupId、artifactId、version
4、点击刷心按钮,引入最新加入的坐标
注意
如果引入的依赖,本地仓库不存在,将会连接远程仓库/中央仓库进行下载
如何配置groupId、artifactId、version
<dependencies>
<dependency>
<groupId>[GROUP_ID]</groupId>
<artifactId>[ARTIFACT_ID]</artifactId>
<version>[VERSION]</version>
</dependency>
</dependencies>
依赖传递
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
IDEA查看依赖关系,鼠标右键Diagrams—>Show Dependencies
依赖范围
依赖的jar包,默认情况下,可以在任何地方使用。
可以通过…设置其作用范围
作用范围
- 主程序范围有效(main文件夹范围内)
- 测试程序范围有效(test文件夹范围内)
- 是否参与打包运行(package指令范围内)
scope值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
---|---|---|---|---|
compile(默认) | yes | yes | yes | log4j |
test | no | yes | no | junit |
provided | yes | yes | no | servlet-api |
runtime | no | yes | yes | jdbc驱动 |
排除依赖
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<!-- 设置依赖范围-->
<scope>...<scope>
<!-- 排除依赖-->
<exclusions>
<exclusion>
<groupId>...</groupId>
<artifactId>...</artifactId>
</exclusion>
</exclusions>
</dependency>
打包插件
<!--打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
maven有3个相互独立的生命周期
- clean:清理工作
- default:核心工作,如:编译、测试、打包、安装、部署等
- site:生成报告、发布站点等。
每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段
clean:清理工作
pre-clean
clean
post-clean
default:核心工作
validate
initialize
…
compile
…
test
…
package
…
install
deploy
site:生成报告、发布站点等
pre-site
site
post-site
site-deploy
执行生命周期的两种方式
在IDEA中,右侧的maven工具栏,选择Lifecycle下的指令,双击执行
在命令行,通过命令执行
mvn clean:移除上一次构建生成文件
mvn compile:编译项目源代码
mvn test:使用合适的单元测试框架运行测试(junit)
mvn package:将编译的文件打包,如:jar/war
mvn install:安装项目到本地仓库
…
注意:在一套生命周期中,当运行后面的阶段时,前面的阶段都会运行