01 Maven简介
简介:maven是一个项目管理和综合工具。其目的是使用标准的目录构建和默认构建生命周期,以支持大型项目的协同开发(maven项目都含有pom.xml文件,会从中央仓库自动下载所需依赖)
02 Maven安装配置
安装:下载安装java
>配置java环境变量
>配置maven环境变量
>验证mvn -version
配置本地仓库:D:\Program Files\apache-maven-3.6.1\conf\settings.xml
><localRepository>D:\workspace\RepMaven</localRepository>
配置中央仓库:D:\Program Files\apache-maven-3.6.1\conf\settings.xml
><mirrors> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror> </mirrors>
注意:当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 http://repo1.maven.org/maven2/ 查找下载。但由于源是国外会影响下载速度,一般设置成阿里的中央仓库提升速度
03 Maven POM
<!--pom.xml示例展示-->
<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.lusifer</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<project>
节点 | Value |
---|---|
项目组(groupId) | 项目组的编号,这在组织或项目中通常是独一无二的。 例如,一家银行集团 com.company.bank 拥有所有银行相关项目 |
名字(artifactId) | 项目的 ID,这通常是项目的名称。 例如,consumer-banking。 除了 groupId 之外,artifactId 还定义了 artifact 在存储库中的位置 |
版本(version) | 项目的版本,与 groupId 一起使用,artifact 在存储库中用于将版本彼此分离。 例如:com.company.bank:consumer-banking:1.0,com.company.bank:consumer-banking:1.1 |
拓展:语义化版本规范(version为x.y.z)
位置 | 含义 |
---|---|
x | 项目整体结构发生重大变化 |
y | 功能数目发生变化 |
z | 修复BUG,即BUG FIX |
04 Maven插件
类型插件:
类型 | 描述 |
---|---|
构建插件 | 在生成过程中执行,并在 pom.xml 中的 元素进行配置 |
报告插件 | 在网站生成期间执行,在 pom.xml 中的,元素进行配置 |
常见插件:
插件 | 描述 |
---|---|
clean | 编译后的清理目标,删除目标目录 |
compiler | 编译 Java 源文件 |
surefile | 运行JUnit单元测试,创建测试报告 |
jar | 从当前项目构建 JAR 文件 |
war | 从当前项目构建 WAR 文件 |
javadoc | 产生用于该项目的 Javadoc |
antrun | 从构建所述的任何阶段运行一组 Ant 任务 |
05 Maven快照
版本 | 描述 | 示例 |
---|---|---|
SNAPSHOT(快照版) | 版本解释为时间,每次都会检查,用于团队内部开发 | data-service:1.0.0-SNAPSHOT |
RELEASE(正式版) | 保持不变,用于对外依赖 | data-service:1.0.0-RELEASE |
概要:快速迭代时自动更新
06 Maven常用命令
命令 | 描述 |
---|---|
mvn clean | 清除产生的项目 |
mvn compile | 编译源代码 |
mvn package | 打包 |
mvn -dmaven.test.skip=true | 只打包不测试(跳过测试) |
mvn install | 安装到本地仓库 |
mvn source:jar或mvn source:jar-no-fork | 源码打包 |
07 创建Maven项目
idea开发maven项目:
Java Web 的 Maven 基本结构:
├─src
│ ├─main
│ │ ├─java
│ │ ├─resources
│ │ └─webapp
│ │ └─WEB-INF
│ └─test
│ └─java
src:源码目录
src/main/java:Java 源码目录
src/main/resources:资源文件目录
src/main/webapp:Web 相关目录
src/test:单元测试
pom.xml示例:
<?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.funtl</groupId>
<artifactId>hello-maven</artifactId>
<version>1.0.0-SNAPSHOT</version>
<!--packaging:打包方式,这里是 war 包,表示为 Java Web 应用程序-->
<packaging>war</packaging>
<!--dependencies:项目依赖配置,整个项目生命周期中所需的依赖都在这里配置-->
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>
</project>