6.Maven聚合和继承,相关案例配置

简介:  1有时候一个项目中有很多个模块,要想各个模块之间影响较小,可以将每个模块拿出来作为一个项目模块,对每个项目模块进行独立的开发。   2在这些过程中会遇到关于聚合和继承的问题。   3何为聚合? A如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合,也就是说当我们点击一个pom的时候,同时运行多个项目模块。这时候要用到以下的标签,将各


1有时候一个项目中有很多个模块,要想各个模块之间影响较小,可以将每个模块拿出来作为一个项目模块,对每个项目模块进行独立的开发。

 

2在这些过程中会遇到关于聚合和继承的问题。

 

3何为聚合?

A如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合,也就是说当我们点击一个pom的时候,同时运行多个项目模块。这时候要用到以下的标签,将各个项目模块整合在一起。

<modules>

<module>…</module>

</modules>

 

4何为继承

A继承是为了消除重复,我们把很多相同的配置提取出来。(这样的好处是:统一管理jar包,方便升级)

B例如:groupId,version等。

 

5聚合与继承的关系:

A聚合主要是为了快速构建项目

B继承主要是为了消除重复。

案例(先简单概括,后全部列出):

一:聚合配置代码(注意,下面这些代码在父项目模块中)

<modules>

  <module>../Hello</module>

  <module>../HelloFriend</module>

  <module>../MakeFriends</module>

</modules>

注意:其中module的路径为相对路径。

 

二:继承配置代码(下面配置在各个子项目模块中)

<parent> 

   <groupId>cn.toto.maven</groupId>

   <artifactId>Project</artifactId>

  <version>0.0.1-SNAPSHOT</version>

   <!相对父pom的位置,也就是说通过下面的配置找到父pom的位置-->

   <relativePath>../parent/pom.xml</relativePath>

</parent>

 

三、继承代码过程中,可以定义属性

<properties>

   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

   <junit.version>4.9</junit.version>

   <maven.version>0.0.1-SNAPSHOT</maven.version>

</properties>

访问属性的方式为${junit.version},例如:

<dependency>

   <groupId>junit</groupId>

   <artifactId>junit</artifactId>

   <version>${junit.version}</version>

   <scope>test</scope>

</dependency>

 

四:在父模块中用dependencyManagement进行管理(通过下面的配置可以知道每个模块是什么,同时:这样的好处是子模块可以有选择行的继承,而不需要全部继承)

<dependencyManagement>

   <dependencies>

      <dependency>

         <groupId>junit</groupId>

         <artifactId>junit</artifactId>

         <version>${junit.version}</version>

         <scope>test</scope>

      </dependency>

      <dependency>

          <groupId>cn.toto.maven</groupId>

          <artifactId>HelloFriend</artifactId>

          <version>${maven.version}</version>

          <type>jar</type>

          <scope>compile</scope>

      </dependency>

    </dependencies>

 </dependencyManagement>

 

 

6实际案例进行说明

模块结构:

一:父模块(Parent):

模块结构:

<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>cn.toto.maven</groupId>

 <artifactId>Parent</artifactId>

 <version>0.0.1-SNAPSHOT</version>

  <packaging>pom</packaging> <!---注意,这里要写成pom-->

 

 <name>Parent</name>

 <url>http://maven.apache.org</url>

 

<!—为实现聚合,点击这个pom.xml的时候四个同时运行--->

<modules>

     <module>../Hello</module> 

     <module>../HelloFriend</module>         

     <module>../MakeFriends</module>

     <module>../web</module>

</modules>

 

 <!—属性配置--à

 <properties>

   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

 </properties>

 

 <!—对所有模块进行统一的管理-à

 <dependencyManagement>

 <dependencies>

   <dependency>

     <groupId>junit</groupId>

     <artifactId>junit</artifactId>

     <version>4.9</version>

     <scope>test</scope>

   </dependency>

   <dependency>

     <groupId>cn.itcast.maven</groupId>

       <artifactId>HelloFriend</artifactId>

     <version>0.0.1-SNAPSHOT</version>

     <scope>compile</scope>

   </dependency>

   <dependency>

                           <groupId>cn.itcast.maven</groupId>

                           <artifactId>Hello</artifactId>

                           <version>0.0.1-SNAPSHOT</version>

                           <scope>compile</scope>

                  </dependency>

                  <dependency>

                           <groupId>cn.itcast.maven</groupId>

                           <artifactId>MakeFriends</artifactId>

                           <version>0.0.1-SNAPSHOT</version>

                           <scope>compile</scope>

                  </dependency>

 </dependencies>

</dependencyManagement>

<distributionManagement>

        <repository>

           <id>releases</id>

           <name>Internal Releases</name>

           <url>http://localhost:8080/nexus-2.1.2/content/repositories/releases/</url>

        </repository>

        <snapshotRepository>

           <id>snapshots</id>

           <name>Internal Snapshots</name>

           <url>http://localhost:8080/nexus-2.1.2/content/repositories/snapshots/</url>

        </snapshotRepository>

 </distributionManagement>

 

</project>

没有其它的代码了。

 

二:Hello模块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中的pom.xml中有相关的配置-->

 <artifactId>Hello</artifactId>

 <name>Hello</name>

 

 <parent> 

         <groupId>cn.itcast.maven</groupId>

          <artifactId>Parent</artifactId>

         <version>0.0.1-SNAPSHOT</version>

       <relativePath>../Parent/pom.xml</relativePath> 

 </parent>

        <dependencies>

   <dependency>

     <groupId>junit</groupId>

     <artifactId>junit</artifactId>

   </dependency>

   </dependencies>

</project>

相关java代码略

 

三:HelloFriendpom.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>

 

 <artifactId>HelloFriend</artifactId>

 

 <name>HelloFriend</name>

 

        <parent> 

         <groupId>cn.toto.maven</groupId>

          <artifactId>Parent</artifactId>

         <version>0.0.1-SNAPSHOT</version>

       <relativePath>../Parent/pom.xml</relativePath> 

 </parent>

 

 <dependencies>

   <dependency>

     <groupId>junit</groupId>

     <artifactId>junit</artifactId>

   </dependency>

   <dependency>

     <groupId>cn.toto.maven</groupId>

     <artifactId>Hello</artifactId>

   </dependency>

   </dependencies>

</project>

 

MakeFriends(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>

 

 <artifactId>MakeFriends</artifactId>

 

 

 

 <name>MakeFriends</name>

 <parent> 

         <groupId>cn.itcast.maven</groupId>

          <artifactId>Parent</artifactId>

         <version>0.0.1-SNAPSHOT</version>

       <relativePath>../Parent/pom.xml</relativePath> 

 </parent>

 <dependencies>

   <dependency>

     <groupId>junit</groupId>

     <artifactId>junit</artifactId>

   </dependency>

   <dependency>

     <groupId>cn.toto.maven</groupId>

     <artifactId>HelloFriend</artifactId>

   </dependency>

   </dependencies>

</project>

相关java代码略

 

目录
相关文章
|
29天前
|
Java Maven
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
这篇文章是一份关于Maven的安装和配置指南,包括下载、环境变量设置、配置文件修改、IDEA集成Maven以及解决jar包下载问题的方法。
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
|
22天前
|
Java Maven
解决idea每次新建maven项目都需要重新配置maven的问题
解决idea每次新建maven项目都需要重新配置maven的问题
62 1
|
2月前
|
Java Maven 编译器
Java编译器注解运行和自动生成代码问题之@AutoService工作问题如何解决
Java编译器注解运行和自动生成代码问题之@AutoService工作问题如何解决
112 1
|
22天前
|
安全 Java Maven
优化Maven镜像配置:使用阿里云加速依赖下载
更新Maven镜像配置至关重要,尤其使用阿里云仓库时。在`settings.xml`中加入特定镜像配置可显著提升依赖下载速度。示例配置指定了阿里云镜像ID、替代表态仓库、安全的URL、默认布局及启用版本管理。需定位至用户目录下的`.m2/`文件夹编辑`settings.xml`,添加镜像信息后保存测试。若下载仍慢,考虑网络状况或备选镜像。多镜像设置时需注意避免冲突。
105 3
|
1月前
|
Java 编译器 测试技术
项目管理工具Maven的简单配置示例
【8月更文挑战第11天】这段内容介绍了如何通过Maven快速搭建并配置一个Java项目。首先需确保已安装Maven,接着可通过命令行创建一个基础项目结构,定义`groupId`、`artifactId`等基本信息。项目根目录下的`pom.xml`文件是核心配置文件,用于声明依赖库如JUnit,并配置构建插件如Maven Compiler Plugin以指定Java编译版本。最后,通过执行`mvn clean install`命令完成项目的清理与构建。这个流程适合初学者快速上手Maven项目管理。
|
28天前
|
Java 应用服务中间件 Maven
Mac使用Idea配置传统SSM项目(非maven项目)
Mac使用Idea配置传统SSM项目(非maven项目)
30 1
|
2月前
|
Java Maven 开发者
入职必会-开发环境搭建14-IDEA配置Maven
在 IDEA 中配置 Maven 可以帮助开发者更方便地管理项目依赖、构建项目和部署应用程序。要在 IDEA 中配置 Maven,可以按照以下步骤进行。
入职必会-开发环境搭建14-IDEA配置Maven
|
29天前
|
Java Maven
成功解决IDEA中建立新项目Maven会默认选择配置(图解详细说明)
这篇文章提供了在IntelliJ IDEA中设置新项目的Maven配置的详细步骤,包括如何通过菜单路径进入设置,选择Maven配置,以及展示设置后的效果,还提供了Maven的安装教程和解决导入项目时jar包下载问题的方案。
成功解决IDEA中建立新项目Maven会默认选择配置(图解详细说明)
|
1月前
|
XML Java Maven
"Maven项目模块化大揭秘!掌握Model间最佳继承设计,让你的代码优雅如诗,项目维护不再愁!"
【8月更文挑战第11天】Maven是Java项目中常用的构建工具,其模块化特性对大型项目的管理至关重要。本文介绍Maven中的继承与聚合机制,指导如何通过继承消除重复配置,以及如何通过聚合统一构建多个模块。遵循单一职责原则,文章建议按功能划分模块,并提供了父POM与子POM的配置示例。此外,还讨论了适度模块化、依赖管理的原则,帮助提升项目的可维护性和扩展性。
30 4
|
29天前
|
Java Maven
Mac Maven环境变量配置 zsh: command not found: mvn
Mac Maven环境变量配置 zsh: command not found: mvn
119 0