Skip to content

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>

image-20220807221216000

继承和聚合

作用相同点不同点
继承快速构建项目打包方式为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 skipTests

pom插件

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