Maven
文章目录
一、学习目标
掌握Maven中的常用操作
会在IDEA中使用Maven构建项目
二、初识Maven
Maven简介
Maven是Apache基金会下一个跨平台的项目管理工具
服务于Java项目的构建、项目信息管理和依赖管理,Maven 项目对象模型(POM),可以通过一小段描述信息来管理项目的构建。
官网地址:https://maven.apache.org/index.html
中央仓库地址:https://mvnrepository.com/
Maven的作用
- 创建项目
- 引入依赖的jar文件
- 打包发布项目
三、Maven的仓库
Maven的仓库
- 本地仓库
- 远程仓库
- 中央仓库
- 其他公共仓库、代理 / 镜像仓库
- 私服
仓库优先级:
- 本地 → 私服 → 其他公共仓库 → 中央仓库
四、Maven的安装
1.环境要求
- Windows或CentOS 6.5
- JDK 7及以上版本
2.下载Maven
- 下载最新版本的Maven:
http://maven.apache.org/download.cgi
- 更多Maven版本:
https://archive.apache.org/dist/maven/maven-3/
- 选择Maven 3.8.1版
- Windows版:apache-maven-3.8.1-bin.zip
- Linux版:apache-maven-3.8.1-bin.tar.gz
3.解压下载的压缩包
五、Maven的配置
1.配置环境变量
Windows版
- 1.设置环境变量:
MAVEN_HOME
用于指向Maven的安装目录
2.编辑
Path
变量:添加 %MAVEN_HOME%\binLinux版
#1.编辑/etc/profile vim /etc/profile #2.添加环境变量 export MAVEN_HOME=Maven的安装目录 export PATH=${MAVEN_HOME}/bin:$PATH #3.使新增的环境变量生效 source /etc/profile
2.验证是否安装正确
在CMD或终端窗口查看Maven的版本
输入命令
"mvn -version"
3.编辑settings.xml文件
- Maven的核心配置文件,定义Maven的全局环境信息
- 位置:
Maven安装目录/conf/settings.xml
4.修改本地仓库位置
默认位置:
${user.home}/.m2/repository
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository>--> <localRepository>D:\ACCP\maven\maven-repository</localRepository>
5.配置远程仓库
配置默认使用中央仓库
<!--阿里巴巴镜像源--> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
六、在IDEA中配置Maven
在IDEA中打开系统设置(Settings)如下图所示按步骤进行配置:
七、在IDEA中构建Maven项目
在IDEA2020中创建Maven项目
Module类型选择
设置项目的Maven坐标
设置Maven项目的属性
Maven项目的标准目录结构
src目录:
/main
/java:存放Java源代码
/resources:存放资源文件
/webapp:web项目根目录
/test
- /java:存放测试用例代码
- /resources:存放测试相关资源文件
- /target:编译构建的输出目录
经验
Maven构建项目的本质,其实是使用了**mvn archetype:generate**命令。
该命令执行时,需要指定一个archetype-catalog.xml文件, 此文件的获取方式有三种,分别为:remote、internal和local,默认情况下为remote,即从 http://repo1.maven.org/maven2/archetype-catalog.xml路径下载。 下载速度非常慢,容易导致系统卡住。
为了提高Maven项目的构建速度,一般需要再Properties中添加一项配置:archetypeCatalog = internal
八、POM文件
pom文件定义了一个项目所需要的所有信息
节点 含义 project POM文件的顶级元素 modelVersion POM模型版本,描述这个POM文件是遵循哪个POM版本 groupId 项目组织的唯一标识,通常由域名倒写,如com.company,对应Java包的结构 artifactId 项目唯一标识,对应项目名称 version artifact(生成物)的版本,如1.0.0-SNAPSHOT、1.0.0-RELEASE,1.0.0表示版本号,SNAPSHOT表示快照版,RELEASE表示发行版 groupId、artifactId、version唯一确定一个artifact name 项目的展现名,在Maven生成的文档中使用 url 项目主页的URL,在Maven生成的文档中使用 description 项目的描述,在Maven生成的文档中使用 packaging 项目的打包方式,一般为 jar 或者 war
节点 含义 parent 指定父依赖,类似Java中的继承,当前项目可继承父依赖中配置的依赖和属性 需要指定父依赖的groupId、artifactId、version和relativePath dependencies 定义此项目的依赖关系集,在子节点dependency中添加具体的依赖 dependency dependencies的子节点,配置具体的依赖,需要指定具体依赖的groupId、artifactId、version,以及一些扩展配置 scope:compile、provided、runtime、test、system optional:false / true exclusions + exclusion:屏蔽对指定groupId+artifactId的传递依赖 properties 定义一些常量,可在pom文件的其他地方引用 build 构建选项,描述如何编译和打包项目,具体工作通过plugin完成:maven-clean-plugin、maven-resources-plugin、 maven-compiler-plugin、maven-surefire-plugin、 maven-war-plugin 或 maven-jar-plugin、maven-install-plugin、maven-deploy-plugin <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.aiden</groupId> <artifactId>StudyMaven</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>StudyMaven Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>StudyMaven</finalName> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> </plugins> </pluginManagement> </build> </project>
九、IDEA中的Maven常用操作
通过菜单View->Tool Windows->Maven,打开Maven操作的界面
功能描述:
- clean: 清除项目编译后的文件
- validate: 验证工程是否正确、所有需要的资源是否可用。可 以验证pom.xml文件的正确性
- compile: 编译项目
- test: 执行项目中的测试用例
- package: 将项目打包
- verify: 运行任何检查,验证包是否有效且达到质量标准
- install: 将项目打包进本地仓库
- site: 生成项目的网页形式的文档
- deploy: 将项目打包发布到远程仓库
扩展功能命令
序号 命令 功能 1 mvn archetype:generate 创建Maven项目 2 mvn compile 编译源代码 3 mvn test-compile 编译测试代码 4 mvn test 运行测试 5 mvn package 打包 6 mvn install 安装到本地仓库