Maven基本配置
用来管理项目依赖的工具
1.配置maven加速
- 打开配置文件
conf/settings.xml
,在<mirrors></mirrors>
标签中添加子节点
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
2.配置项目仓库
- 下面以Spring仓库为例
<repositories>
<repository>
<id>spring-releases</id>
<name>Spring Releases</name>
<url>https://repo.spring.io/release</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
3.配置上传地址
- 配置依赖上传nexus私服
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://192.168.0.101/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://192.168.0.101/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
4.Maven工程结构
modelVersion
:指定POM模型版本groupId
:定义当前Maven组织名称artifactId
:定义实际项目名称version
:定义当前项目的当前版本name
:项目名字packaging
:项目打包方式dependencies
:添加依赖
<?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>cn.hzlim</groupId>
<artifactId>MavenDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>MavenDemo</name>
<packaging>war</packaging>
<dependencies>
</dependencies>
</project>
5.Maven全局配置
properties
:配置当前项目的全局配置,可以定义变量
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.11</java.version>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
</properties>
6.Maven添加依赖
- 在
dependencies
添加依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
scope
:代表此依赖的范围 | 依赖范围 | 说明 | | —- | —- | | compile | 编译范围,指 A在编译时依赖 B,此范围为默认依赖范围。编译范围的依赖会用在 编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。 | | provided | provided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依 赖在编译和测试时需要,在运行时不需要,比如:servlet api 被 tomcat 容器提供。 | | runtime | runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc 的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。 | | test | test 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用, 比如:junit。由于运行时不需要所以test范围依赖不会被打包。 | | system | system 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR 文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用。 |
7.Maven常用命令
- maven打包项目所需的命令
| 命令 | 说明 |
| —- | —- |
|
mvn compile
| 完成编译操作 , 执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件。 | |mvn clean
| 执行完毕后,会将target目录删除. | |mvn test
| 执行完毕后,会在target目录中生成三个文件夹:
surefire、surefire-reports(测试报告)、test-classes(测试的字节码文件) | |mvn package
| 完成打包操作, 执行完毕后,会在target目录中生成一个文件,该文件可能是 jar、war | |mvn install
| 执行 mvn install命令,完成将打好的jar包安装到本地仓库的操作 ,
执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用 |
Maven模块化
1.父模块
modules
:配置模块与子模块建立联系
<?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>cn.hzlim</groupId>
<artifactId>MyParent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.11</java.version>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
</properties>
<modules>
<module>MyModel</module>
</modules>
</project>
2.子模块
parent
:继承的pom,可以继承部分标签
<?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>
<parent>
<groupId>cn.hzlim</groupId>
<artifactId>MyParent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>MyModel</artifactId>
<packaging>jar</packaging>
</project>
3.元素继承
- 可继承的元素
groupId:项目组ID,项目坐标的核心元素
version:项目版本,项目坐标的核心因素
description:项目的描述信息
organization:项目的组织信息
inceptionYear:项目的创始年份
url:项目的URL地址
developers:项目的开发者信息
contributors:项目的贡献者信息
distributionManagement:项目的部署配置
issueManagement:项目的缺陷跟踪系统信息
ciManagement:项目的持续集成系统信息
scm:项目的版本控制系统信息
malilingLists:项目的邮件列表信息
properties:自定义的Maven属性
dependencies:项目的依赖配置
dependencyManagement:项目的依赖管理配置
repositories:项目的仓库配置
build:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
reporting:包括项目的报告输出目录配置、报告插件配置等
更新时间:{docsify-updated}