Maven项目的依赖、继承、聚合关系

本文围绕Maven Java项目搭建展开,介绍了父项目搭建步骤,包括项目信息编辑、打包方式选择等。阐述了子项目搭建的继承和聚合关系,指出聚合关系前提是继承关系。还讲解了如何优雅使用聚合关系管理jar包版本,通过特定标签优化配置,方便修改版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.父项目的搭建

  1. 新建一个Maven Project
    在这里插入图片描述
  2. 勾选创建简单项目
    在这里插入图片描述
  3. 编辑项目信息
    以创建一个淘宝项目为例。
    在这里插入图片描述
  • Group Id写公司名字
  • Artifact Id写父项目名或子模块名
  • Version写版本号
    以上三个属性为一个项目的坐标,通过这个坐标即可定位一个项目。
  • Packaging为项目打包方式。
    • 如果是父项目或者子项目还需要作为其他项目的父项目,必须选择pom选项;
    • 如果子项目是java项目,选择jar选项;
    • 如果子项目是web项目,选择war选项。

点击Finish完成创建,父项目的目录结构如下:
在这里插入图片描述
4. 在父项目的pom.xml文件中添加如下依赖(用于后续讲解)
记得是在 <dependencies> 标签中添加。

<!-- 添加spring-webmvc的依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.1.6.RELEASE</version>
</dependency>

以上代码可在 Maven仓库 中找到。
保存后,这时在项目目录中并没有增加依赖相关的jar包,原因是因为这是一个父项目,之后如果有子项目继承该父项目或者该父项目下有Module项目,那么该子项目或Module项目便会自动添加依赖相关的jar包。

2.子项目的搭建(继承关系)

以创建淘宝项目的商品模块为例,大致步骤同上。
这里Parent Project需要勾选刚才创建的TaoBao父项目坐标。
在这里插入图片描述
在子项目的目录中,可以看到刚才父项目pom.xml文件中添加的依赖对应的jar包。这里不仅仅只添加了spring-webmvc jar包,还有其他支持spring-webmvc的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>
	<parent>
		<groupId>com.alibaba</groupId>
		<artifactId>TaoBao</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<groupId>com.alibaba</groupId>
	<artifactId>TaoBao-Shop</artifactId>
	<version>0.0.1-SNAPSHOT</version>
</project>

其中除了自己的坐标外,还有<parent>标签包含的父项目的坐标。
这里子项目的groupIdversion编译器会建议删除,因为与父项目相比只有artifactId不一样,其他都来自父项目,但如果希望与父项目不同,可以修改而不删除。
而在父项目的pom.xml文件中没有任何变化。
这种在子项目中引用父项目坐标创建的两个项目的关系就被称为继承关系。
稍后再做详述,下面我们来看聚合关系。

3.子项目的搭建(聚合关系)

以创建淘宝项目的购物模块为例,这次通过右键父项目创建该父项目的Maven Module。
在这里插入图片描述
点击Next,新的窗口同样勾选创建简单项目,Module Name写子项目名。
在这里插入图片描述
点击Finish
这时看新的子项目目录结构和pom.xml文件,和刚才的子项目完全相同。
再看父项目目录结构,发现与新的子项目构成包含关系。
在这里插入图片描述
同时父项目的pom.xml文件,发现多了如下配置:

  <modules>
  	<module>TaoBao-Trans</module>
  </modules>

小节:
聚合关系的前提是继承关系,父项目会把子项目包含到父项目中;
聚合项目的子项目的类型必须是Maven Module而不是Maven Project;
具有聚合关系的父项目在pom.xml文件中会有module指向子项目;
聚合项目的父子关系比继承项目的父子关系强。

4.优雅的使用聚合关系管理jar包版本

下面将父项目pom.xml文件添加的依赖套上<dependencyManagement>标签,如下:

  <dependencyManagement>
	  <dependencies>
	      <dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-webmvc</artifactId>
		    <version>4.1.6.RELEASE</version>
		  </dependency>
	  </dependencies>
  </dependencyManagement>

这时发现以继承和聚合关系创建的子项目都不再有父项目中的依赖,此时如果还想在子项目中有父项目的依赖,可在子项目中再添加依赖,但无需指定依赖的<version>,而是由父项目来决定。
这是<dependencyManagement>标签唯一的作用(或好处)。

小节:
<dependencyManagement>标签用于声明在聚合项目中可能用到的标签,但子项目不会立即引入其中的依赖,而需要手动添加需要的依赖,但不需要声明依赖的版本。

下面再对父项目的pom.xml文件做优化,在<dependencyManagement>上方添加<properties>标签,<properties>标签中的子标签名可以随意定义,假如写如下标签

<spring-version>4.1.6.RELEASE</spring-version>

然后替换spring-webmvc依赖的<version>内容为${spring-version}(花括号中写刚刚定义的子标签名),最终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.alibaba</groupId>
  <artifactId>TaoBao</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  
  <properties>
	  <spring-version>4.1.6.RELEASE</spring-version>
  </properties>
  
  <dependencyManagement>
	  <dependencies>
	      <dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-webmvc</artifactId>
		    <version>${spring-version}</version>
		  </dependency>
	  </dependencies>
  </dependencyManagement>

  <modules>
  	<module>TaoBao-Trans</module>
  </modules>
</project>

现在我们如果需要配置jar包的版本,只需要对<properties>标签中的内容做修改即可,而不需要费力去找<version>标签修改版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值