Maven 工程分类和工程关系
Posted xingshouzhan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven 工程分类和工程关系相关的知识,希望对你有一定的参考价值。
一 工程分类
1.POM工厂
用在父级工程或聚合工程中。用来做 jar 包的版本控制。常见 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>groupName</groupId> <!-- 工程名称 --> <artifactId>artifactName</artifactId> <!-- 版本 --> <version>1.0</version> <!-- 工程类型 --> <packaging>pom</packaging> <!-- 定义一个 properties 配置信息。 定义配置信息,为了统一管理。 --> <properties> <!-- 如果需要使用 properties 配置信息内容。 可以通过表达式${junit.version}访问 4.12 --> <junit.version>4.12</junit.version> </properties> <!-- 定义当前工程都管理了什么 jar,都是什么版本。并非依赖。 --> <dependencyManagement> <dependencies> <!-- 单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <!-- 有效范围, 作用域 compile - 编译中有效 runtime - 运行中有效 system - 全部中有效[默认] provided - 当前工程中有效. test - 只在测试有效 。 --> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> <!-- 定义当前工程依赖了什么 jar 包,版本是什么。 --> <dependencies> <!-- 单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <!-- 有效范围, 作用域。 --> <scope>test</scope> </dependency> </dependencies> </project>
2. jar工厂
将会打包成 jar 用作 jar 包使用。即常见的本地工程 - Java Project。常见 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>groupName</groupId> <artifactId>artifactName</artifactId> <version>1.0</version> <!-- jar 工程为默认工程类型,可以省略配置 --> <!-- <packaging>jar</packaging> --> </project>
3.war工厂
将会打包成 war,发布在服务器上的工程。如网站或服务。即常见的网络工程 - Dynamic Web Project。war 工程默认没有 WEB-INF 目录及 web.xml 配置文件,IDE 通常会显示工程错 误,提供完整工程结构可以解决。常见 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>groupName</groupId> <artifactId>artifactName</artifactId> <version>1.0</version> <packaging>war</packaging> </project>
二 工厂关系
1.依赖 即 A 工程开发或运行过程中需要 B 工程提供支持,则代表 A 工程依赖 B 工程。在这种 情况下,需要在 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>localPrjectGroupName</groupId> <!-- 本工程名称 --> <artifactId>localPrjectArtifactName</artifactId> <!-- 本工程版本 --> <version>localPrjectVersionNo</version> <!-- 本工程类型 --> <packaging>packagingTypeName</packaging> <!-- 依赖信息定义 --> <dependencies> <!-- 定义一个具体的依赖 --> <dependency> <!-- 依赖的工程所在组名 --> <groupId>groupName</groupId> <!-- 依赖的工程名 --> <artifactId>artifactName</artifactId> <!-- 依赖的工程版本 --> <version>versionNo</version> <!-- 依赖的工程有效范围,其可选值有: compile - 编译中有效 runtime - 运行中有效 system - 全部中有效[默认] provided - 当前工程中有效. test - 只在测试有效 --> <scope>system</scope> </dependency> </dependencies> </project>
2.继承 如果 A 工程继承 B 工程,则代表 A 工程默认依赖 B 工程依赖的所有资源,且可以应用 B 工程中定义的所有资源信息。被继承的工程(B 工程)只能是 POM 工程。具体工程 pom.xml 文件配置如下:
2.1父工程
<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>parentGroup</groupId> <artifactId>parentProject</artifactId> <version>1.0</version> <packaging>pom</packaging> </project>
2.2子工程
<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>parentGroup</groupId> <artifactId>parentProject</artifactId> <version>1.0</version> </parent> <!-- 若子工程所在组及版本与父工程一致,可以省略 groupId 和 version 标签配置 --> <groupId>childGroup</groupId> <artifactId>childProject</artifactId> <version>1.0</version> </project>
3聚合工程
当我们开发的工程拥有 2 个以上模块的时候,每个模块都是一个独立的功能集合。比如 某大学系统中拥有搜索平台,学习平台,考试平台等。开发的时候每个平台都可以独立编译, 测试,运行。这个时候我们就需要一个聚合工程。 在创建聚合工程的过程中,总的工程必须是一个 POM 工程(Maven Project),各子模块 可以是任意类型模块(Maven Module)。所有聚合工程和聚合模块必须处于同一个组 (groupId)中,且聚合工程可以嵌套。 具体 pom.xml 文件配置如下:
3.1总工程配置
<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>superGroup</groupId> <artifactId>superProject</artifactId> <version>1.0</version> <packaging>pom</packaging> <!-- 当前聚合工程中的子模块定义,引用的是子模块的 artifactId。 --> <modules> <module>subProject1</module> <module>subProject2</module> </modules> </project>
3.2子模块1配置
<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>superGroup</groupId> <artifactId>superProject</artifactId> <version>1.0</version> </parent> <artifactId>subProject1</artifactId> </project>
子模块2配置
<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>superGroup</groupId> <artifactId>superProject</artifactId> <version>1.0</version> </parent> <artifactId>subProject2</artifactId> </project>
以上是关于Maven 工程分类和工程关系的主要内容,如果未能解决你的问题,请参考以下文章
大数据必学Java基础(一百二十二):POM模式-Maven工程关系