您当前的位置: 首页 >  apache

Bulut0907

暂无认证

  • 0浏览

    0关注

    346博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Apache Maven project与module之间的继承和聚合、Maven的超级pom、有效pom

Bulut0907 发布时间:2022-07-08 09:44:55 ,浏览量:0

目录
  • 1. project与module之间的继承和聚合
    • 1.1 概念
    • 1.2 作用
    • 1.3 使用实例
  • 2. 超级pom
    • 2.1 简介
    • 2.2 超级pom详细说明
  • 3. 有效pom
    • 3.1 简介
    • 3.2 查看有效pom命令

1. project与module之间的继承和聚合 1.1 概念

maven项目先创建了一个project A,然后在project A(父工程)下面创建了一个module B(子工程)。则B的pom.xml能继承A的pom.xml的配置

1.2 作用

在父工程统一管理所有module的依赖版本。对同一个项目的多个module进行依赖,能方便的使用同一版本

1.3 使用实例

父工程的pom.xml如下。


  4.0.0

  com.hh
  maven-learn
  0.1
  pom

  
  
    maven-module1
  

  
      1.15.0
  

  
  
    

      
        org.apache.flink
        flink-connector-jdbc
        ${flink.version}
        provided
      

      
        org.apache.flink
        flink-connector-hive_2.12
        ${flink.version}
        provided
      

    
  


子module的pom.xml如下



    4.0.0

    
    
        maven-learn
        com.hh
        0.1
    

    
    maven-module1

    

        
            org.apache.flink
            flink-connector-jdbc
        

        
            org.apache.flink
            flink-connector-hive_2.12
            
            1.14.5
            
            compile
        

    


说明如下:

  • 通过修改父工程的pom.xml的flink.version标签的版本号,就能影响到dependencyManagement中的版本号。再通过继承,能影响子module的版本号
  • 聚合的好处:很多maven构建命令都可以在“父工程”中一键执行。以mvn install 命令为例:在父工程执行mvn install可以一键完成安装,先安装父工程,再安装子module。如果哪个子module被依赖,则优先安装。注意避免死循环依赖
2. 超级pom 2.1 简介

当我们创建一个project时,都会默认继承Maven的超级pom。超级pom定义了Maven在构建过程中有很多默认的设定,如:源文件sources存放的目录、测试源文件test-sources存放的目录、构建输出的目录target等

2.2 超级pom详细说明

超级pom位于maven的安装目录下的apache-maven-3.8.6\lib\maven-model-builder-3.8.6.jar包内。解压该jar包,在org\apache\maven\model目录下,就可以看到一个文件pom-4.0.0.xml,这就是超级pom。文件内容和说明如下:







  4.0.0

  
    
      central
      Central Repository
      https://repo.maven.apache.org/maven2
      
      default
      
        
        false
      
    
  

  
    
      central
      Central Repository
      https://repo.maven.apache.org/maven2
      default
      
        false
      
      
        
        never
      
    
  

  
    
    ${project.basedir}/target
    ${project.build.directory}/classes
    ${project.artifactId}-${project.version}
    ${project.build.directory}/test-classes
    ${project.basedir}/src/main/java
    ${project.basedir}/src/main/scripts
    ${project.basedir}/src/test/java
    
      
        ${project.basedir}/src/main/resources
      
    
    
      
        ${project.basedir}/src/test/resources
      
    
    
    
      
      
      
        
          maven-antrun-plugin
          1.3
        
        
          maven-assembly-plugin
          2.2-beta-5
        
        
          maven-dependency-plugin
          2.8
        
        
          maven-release-plugin
          2.5.3
        
      
    
  

  
  
    ${project.build.directory}/site
  

  
    
    
    
      release-profile

      
        
          performRelease
          true
        
      

      
        
          
            true
            maven-source-plugin
            
              
                attach-sources
                
                  jar-no-fork
                
              
            
          
          
            true
            maven-javadoc-plugin
            
              
                attach-javadocs
                
                  jar
                
              
            
          
          
            true
            maven-deploy-plugin
            
              true
            
          
        
      
    
  



3. 有效pom 3.1 简介

pom的继承是单继承的。子工程pom继承父工程pom,可以覆盖父工程pom的配置;父工程pom继承超级pom,可以覆盖超级pom的默认配置;最后形成一个有效pom(effective POM)。而Maven的执行构建是按照最终的有效pom来的

3.2 查看有效pom命令

可以使用如下命令查看有效pom

C:\Users\dell\Desktop\maven-learn>mvn help:effective-pom
关注
打赏
1664501120
查看更多评论
立即登录/注册

微信扫码登录

0.0400s