pom
pom.xml
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>org.example</groupId>
<artifactId>maven-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>maven-demo</name>
</project>packaging
xml
<packaging>jar</packaging>: 默认值,代表普通工程,打包.jar结尾文件
<packaging>war</packaging>: 代表java的web工程,打包.war结尾文件(略)
<packaging>pom</packaging>: 代表不会打包,用来做继承的父工程聚合
作用:聚合用于快速构建maven工程,一次性构建多个项目/模块
制作一个空模块,打包类型定义为
xml
<packaging>pom</packaging>定义当前模块进行构建时关联的其他模块名称
xml
<modules>
<module>shop-cloudhost</module>
<module>shop-starter</module>
<module>shop-timelicense</module>
<module>shop-cloudstorage</module>
<module>order-mis-api</module>
<module>order-mis-impl</module>
<module>order-payment</module>
<module>order-invoice</module>
</modules>继承
作用:通过继承可以实现在子工程中沿用父工程中的配置
制作方式:在子工程中声明其父工程与对应的位置
xml
<parent>
<artifactId>online-microservices</artifactId>
<groupId>com.supermap.online</groupId>
<version>11.0.0-SNAPSHOT</version>
<!-- 填写父工程的pom(上下级目录可以省略) -->
<relativePath>../pom.xml</relativePath>
</parent>继承定义依赖
在父工程中定义一系列功能,如:依赖管理
xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.supermap.online</groupId>
<artifactId>server-common</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
继承和聚合
| 作用 | 相同点 | 不同点 | |
|---|---|---|---|
| 继承 | 快速构建项目 | 打包方式为pom.xml,可制作到到同一个pom文件,均属于设计型模块,无开发内容 | |
| 聚合 | 快速配置 |
属性
自定义属性
等同于定义变量,方便版本统一维护
定义格式:
xml
<properties>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>调用格式:
xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.supermap.online</groupId>
<artifactId>server-common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>内置属性
maven内置属性,快速配置
${baseDir}
${version}Setting属性
使用maven配置文件setting.xml中的标签属性,用于动态配置
${settings.localRepository}java系统属性
读取java系统属性
${user.home}系统属性查询方式
mvn help:system环境变量属性
使用maven配置文件setting.xml中的标签属性,用于动态配置
${env.JAVA_HOME}环境变量属性查询方式
mvn help:system版本管理
工程版本
SNAPSHOT (快照版本)
项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时时更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本)快照版本会随着开发的进展不断更新
RELEASE (发布版本)
项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本
工程版本号约定
约定规范: <主版本>.<次版本>.<增量版本>.<里程碑版本>
- 主版本:表示项目重大架构的变更,如: spring5相较于spring4的迭代
- 次版本:表示有较大的功能增加和变化,或者全面系统地修复漏洞
- 增量版本:表示有重大漏洞的修复
- 里程碑版本:表明-一个版本的里程碑(版本内部)。这样的版本同下一个正式版本相比,相对来说不是很稳定,有待更多的测试
资源配置
了解
在任意配置文件中加载pom文件中定义的属性
xml
在propertie中定义的属性
调用方式${属性名}
pom中开启配置文件加载pom属性
<resources>
<resource>
<!- 路径 -->
<directory>${project.basedir}/src/main/resources</directory>
<!- 开启 -->
<filtering>true</fitering>
</resource>
</resources>多环境开发配置
加载指定环境配置
定义
xml
<!-- 创建多环境-->
<profiles>
<!--定义具体的环境:生产环境-->
<profile>
<!--定义环境对应的唯一名称-->
<id>pro env</id>
<!--定义环境中专用的属性值-->
<properties>
<jdbc.url>jdbc :mysq1://127.1.1.1:3306/ssm _db</jdbc.ur1>
</properties>
<!--设置默认启动-->
<activation >
<activeByDefault>true</activeByDefault>
</ activation>
</profile>
<!--定义具体的环境:开发环境-->
<profile>
<id>dev_ env</id>
</profile>
</profiles>开发
idea的maven选择profile环境
调用
mvn 指令 -P 环境定义id
如:
mvn install -P dev跳过测试
命令
mvn install -D skipTestspom插件
xml
在本地仓库org。apace.maven目录下的maven-surefire-plugin的插件jar包
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<!--没置跳辻測武-->
<skipTests>true</ skipTests>
</configuration>
</plugin>指定跳过
xml
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<includes>
<!--包含指定的用例,**是任意包下/-->
<include>**/User*Test.java</include>
</includes>
<excludes>
<!--排除-->
<exclude></exclude>
</excludes>
</configuration>
</plugin>范例: 5.1.9.RELEASE
