• 2022年0902Maven的继承和利用Idea创建Maven工程的内容<第五课>


    86cf07ad8cd34170bae6bd879defd8bd.png

    第一部分 Maven的继承

    1 概念

    Maven工程之间,A 工程继承 B 工程

    B 工程:父工程 A 工程:子工程 本质上是 A 工程的 pom.xml 中的配置继承了 B 工程中 pom.xml 的配置。

    2 作用

    在父工程中统一管理项目中的依赖信息,具体来说是管理依赖信息的版本。

    3 它的背景是:

    对一个比较大型的项目进行了模块拆分。 一个 project 下面,创建了很多个 module。 每一个 module 都需要配置自己的依赖信息。

    4 它背后的需求是:

    在每一个 module 中各自维护各自的依赖信息很容易发生出入,不易统一管理。 使用同一个框架内的不同 jar 包,它们应该是同一个版本,所以整个项目中使用的框架版本需要统一。 使用框架时所需要的 jar 包组合(或者说依赖信息组合)需要经过长期摸索和反复调试,最终确定一个可用组合。这个耗费很大精力总结出来的方案不应该在新的项目中重新摸索。 通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包;又能够将以往的经验沉淀下来,节约时间和精力。

    在一个工程中依赖多个 Spring 的 jar 包

    1. TIP
    2. [INFO] +- org.springframework:spring-core:jar:4.0.0.RELEASE:compile
    3. [INFO] | \- commons-logging:commons-logging:jar:1.1.1:compile
    4. [INFO] +- org.springframework:spring-beans:jar:4.0.0.RELEASE:compile
    5. [INFO] +- org.springframework:spring-context:jar:4.0.0.RELEASE:compile
    6. [INFO] +- org.springframework:spring-expression:jar:4.0.0.RELEASE:compile
    7. [INFO] +- org.springframework:spring-aop:jar:4.0.0.RELEASE:compile
    8. [INFO] | \- aopalliance:aopalliance:jar:1.0:compile

    使用 Spring 时要求所有 Spring 自己的 jar 包版本必须一致。为了能够对这些 jar 包的版本进行统一管理,我们使用继承这个机制,将所有版本信息统一在父工程中进行管理。

    5 创建父类工程     

    创建的过程和前面创建Maven的Java项目一样,你可以点击这个连接进行查看我之前手动创建的Maven的Java项目,现在我们还是使用手动的方式来创建,后面会说如何使用开发工具idea进行创建。

    工程名称:pro03-maven-parent

    工程创建好之后,要修改它的打包方式:

    1. <groupId>com.csdn.mavengroupId>
    2. <artifactId>pro03-maven-parentartifactId>
    3. <version>1.0-SNAPSHOTversion>
    4. <packaging>pompackaging>
    只有打包方式为 pom 的 Maven 工程能够管理其他 Maven 工程。打包方式为 pom 的 Maven 工程中不写业务代码,它是专门管理其他 Maven 工程的工程。

    ②创建模块工程

    模块工程类似于 IDEA 中的 module,所以需要进入 pro03-maven-parent 工程的根目录,然后运行 mvn archetype:generate 命令来创建模块工程。

    模块工程类似于 IDEA 中的 module,所以需要进入 pro03-maven-parent 工程的根目录,然后运行 mvn archetype:generate 命令来创建模块工程。

    假设,我们创建三个模块工程:

     

     

    997f491ab0054312936449739b49bfc9.png

     6 解读 父类工程 的pom.xml文件

     1 坐标 pom.xml

    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">
    2. <modelVersion>4.0.0modelVersion>
    3. <groupId>com.java.mavengroupId>
    4. <artifactId>pr03-maven-javaartifactId>
    5. <version>1.0-SNAPSHOTversion>
    6. <version>1.0-SNAPSHOTversion>
    7. <packaging>pompackaging>
    8. <name>pr03-maven-javaname>
    9. <url>http://maven.apache.orgurl>
    10. <properties>
    11. <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    12. properties>

    2  maven的聚合

    1. <modules>
    2. <module>pro04-maven-javamodule>
    3. <module>pro05-maven-javamodule>
    4. <module>pro06-maven-javamodule>
    5. modules>

    3 在父工程中写的程序 在子工程中没有被引用

    1. <dependencyManagement>
    2. <dependencies>
    3. <dependency>
    4. <groupId>org.springframeworkgroupId>
    5. <artifactId>spring-coreartifactId>
    6. <version>4.0.0.RELEASEversion>
    7. dependency>
    8. <dependency>
    9. <groupId>org.springframeworkgroupId>
    10. <artifactId>spring-beansartifactId>
    11. <version>4.0.0.RELEASEversion>
    12. dependency>
    13. <dependency>
    14. <groupId>org.springframeworkgroupId>
    15. <artifactId>spring-contextartifactId>
    16. <version>4.0.0.RELEASEversion>
    17. dependency>
    18. <dependency>
    19. <groupId>org.springframeworkgroupId>
    20. <artifactId>spring-expressionartifactId>
    21. <version>4.0.0.RELEASEversion>
    22. dependency>
    23. <dependency>
    24. <groupId>org.springframeworkgroupId>
    25. <artifactId>spring-aopartifactId>
    26. <version>4.0.0.RELEASEversion>
    27. dependency>
    28. dependencies>
    29. dependencyManagement>
    30. project>
    1. #### 然后在子工程中运行mvn dependency:list,效果如下:
    2. ```
    3. TIP
    4. [INFO] org.springframework:spring-aop:jar:4.1.4.RELEASE:compile
    5. [INFO] org.springframework:spring-core:jar:4.1.4.RELEASE:compile
    6. [INFO] org.springframework:spring-context:jar:4.1.4.RELEASE:compile
    7. [INFO] org.springframework:spring-beans:jar:4.1.4.RELEASE:compile
    8. [INFO] org.springframework:spring-expression:jar:4.1.4.RELEASE:compile
    9. ```
    1. <properties>
    2. <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    3. ```xaml
    4. <csdn.spring.version>4.3.6.RELEASEcsdn.spring.version>
    5. ```
    6. properties>

    在需要的地方使用${}的形式来引用自定义的属性名:

    db720016367049c0b179b6eff0fa342c.png

     d974071b5d60492896d0dac419bb46be.png

     

    00c54ed04aed4531a19c3552a6cf70cb.png

     9072acc6ac7f4a23a28bc69b8f1412a7.png

    8e5a5d6d09b141d4b5b4ff3fcaf8c7a6.png

    4105f9d9404e4911865d96d920e69264.png

    6bbd0700f07043c1b136afd3e8a4dec4.png

    d7f14ce4ad3647d08450d42a0ce28630.png

     

    第二部分 Idea创建Maven的工程 

    d8263add833749e38e14d0995c0c44cf.png

     

    50f80c7d4e834412888a72787d219f63.png

     

    aee523c70d4145eabeb277c67d00e15c.png

     然后Flash又完成了项目构建

    0147bd11bb204ee9b6b462f082c1fa20.png

     配值项目的maven仓库

    6101d86e36554cf3ace2a73db84cc8d7.png

     D:/softwhy/apache-maven-3.6.3  Maven的仓库的位置 本地仓库

    2e11f53f79b8487ba6af5962e8658acd.png

     

    D:\softwhy\apache-maven-3.6.3\conf\settings.xml  Maven的Setting.xml文件

    b9b0a51e4815476084fec7c247a2d3dd.png

     

    D:\maven_repository  放下载的文件信息

    5ddfe970a58b49f181dd7938e6766e73.png

     

    d8a73b4036444c6dbe16a199abfd67a9.png

     

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0modelVersion>
    6. <groupId>com.idea.mavengroupId>
    7. <artifactId>pro01-maven-idea-parentartifactId>
    8. <packaging>pompackaging>
    9. <version>1.0-SNAPSHOTversion>
    10. <modules>
    11. <module>poro2-module-javamodule>
    12. modules>
    13. project>

    创建模块

    c88b0766b05b457ba9099e815e0f4616.png

     

     

     

     

     

    8ed67e6d538a456e867ebe1388b149a0.png

     

    e77b7a64eb3d4ea0a28ec8053c59eaf7.png

     

    e01e986e721c4472855259a0b69c1fa2.png

     

    33e5d959553e4b9ca25b296b3e2e4bec.png

     

     

     

     

     

     

     

     

  • 相关阅读:
    C/C++---------------LeetCode第1394.找出数组中的幸运数
    微服务学习第十一节
    java面试(JVM)
    【深入理解Kotlin协程】CoroutineScope.launch源码追踪扒皮
    selenium自动化chrome
    Vue移动 HTML 元素到指定位置 teleport 标签
    【云原生 · Kubernetes】部署zookeeper
    《QT从基础到进阶·二十九》QT,opencv源码调试
    难的不是今年,自学软件测试1个半月,上岸拿5个offer
    C专家编程 第7章 对内存的思考 7.6 内存泄漏
  • 原文地址:https://blog.csdn.net/qq_56248592/article/details/126670457