Maven 聚合和继承

Maven 聚合


    4.0.0
    com.juvenxu.mvnbook.account
    account-parent
    1.0.0-SNAPSHOT
    pom
    Account Parent

由于父模块只是为了帮助消除配置的重复,因此它本身不包含除POM之外的项目文件,也就不需要src/main/java之类的文件夹了。需要注意打包类型也为pom即可。


    
        com.juvenxu.mvnbook.account
        account-parent
        1.0.0-SNAPSHOT
        ../account-parent/pom.xml
    account-email
    Account Email
    
    
        
            
                org.apache.shiro
                shiro-spring
                1.2.2
             
        
    
    
    
        
            ....
        
    

  • Java中的继承一样需要指定继承的配置文件地址标签

子pom配置:


    父pom所在项目的groupId
    父pom所在项目的artifactId
    父pom所在项目的版本号

dependencyManagement

  1. MavendependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。

  2. pom.xml文件中,jar的版本判断的两种途径

  • 如果dependencies里的dependency自己没有声明version元素,那么maven就会倒dependencyManagement里面去找有没有对该artifactIdgroupId进行过版本声明,如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version

    • 所以在继承中父类的pom文件要使用dependencyManagement来承载公共依赖。为底层子pom提供公用的依赖verison。就不需要每个子类频繁声明了。有时候还可能声明的版本不一致
  • 如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jarversion声明,都以dependency里的version为准。

如下

pom.xml  
//只是对版本进行管理,不会实际引入jar  
  
        
              
                org.springframework  
                spring-core  
                3.2.7  
              
      
  
  
//会实际下载jar包  
  
         
                org.springframework  
                spring-core  
         

你可能感兴趣的:(Maven 聚合和继承)