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

目录

  • 1.父项目的搭建
  • 2.子项目的搭建(继承关系)
  • 3.子项目的搭建(聚合关系)
  • 4.优雅的使用聚合关系管理jar包版本

1.父项目的搭建

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

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


<dependency>
    <groupId>org.springframeworkgroupId>
    <artifactId>spring-webmvcartifactId>
    <version>4.1.6.RELEASEversion>
dependency>

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

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

以创建淘宝项目的商品模块为例,大致步骤同上。
这里Parent Project需要勾选刚才创建的TaoBao父项目坐标。
Maven项目的依赖、继承、聚合关系_第4张图片
在子项目的目录中,可以看到刚才父项目pom.xml文件中添加的依赖对应的jar包。这里不仅仅只添加了spring-webmvc jar包,还有其他支持spring-webmvc的jar包。
Maven项目的依赖、继承、聚合关系_第5张图片
再看子项目的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.0modelVersion>
	<parent>
		<groupId>com.alibabagroupId>
		<artifactId>TaoBaoartifactId>
		<version>0.0.1-SNAPSHOTversion>
	parent>
	<groupId>com.alibabagroupId>
	<artifactId>TaoBao-ShopartifactId>
	<version>0.0.1-SNAPSHOTversion>
project>

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

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

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

  <modules>
  	<module>TaoBao-Transmodule>
  modules>

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

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

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

  <dependencyManagement>
	  <dependencies>
	      <dependency>
		    <groupId>org.springframeworkgroupId>
		    <artifactId>spring-webmvcartifactId>
		    <version>4.1.6.RELEASEversion>
		  dependency>
	  dependencies>
  dependencyManagement>

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

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

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

<spring-version>4.1.6.RELEASEspring-version>

然后替换spring-webmvc依赖的内容为${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.0modelVersion>
  <groupId>com.alibabagroupId>
  <artifactId>TaoBaoartifactId>
  <version>0.0.1-SNAPSHOTversion>
  <packaging>pompackaging>
  
  <properties>
	  <spring-version>4.1.6.RELEASEspring-version>
  properties>
  
  <dependencyManagement>
	  <dependencies>
	      <dependency>
		    <groupId>org.springframeworkgroupId>
		    <artifactId>spring-webmvcartifactId>
		    <version>${spring-version}version>
		  dependency>
	  dependencies>
  dependencyManagement>

  <modules>
  	<module>TaoBao-Transmodule>
  modules>
project>

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

你可能感兴趣的:(maven,maven,java,聚合关系,架构,项目搭建)