maven父子项目引用(继承和聚合)

一、继承方式

分别创建三个项目fu、ca、cb。fu作为父项目,ca、cb、cp作为子项目

fu创建时打包方式为pom;
ca、cb创建时打包方式为jar;
cp创建时打包方式为war(主要看插件是否也跟着继承过来)

fu项目的pom.xml


    4.0.0
    com.xx
    fu
    0.0.1-SNAPSHOT
    pom
    
    
        
            
                javax.servlet
                servlet-api
                2.3
            
        
    


    
       
        
            
                
                    org.apache.maven.plugins
                    maven-war-plugin
                    3.3.1 
                
            
        
    

ca项目的pom.xml


    
        com.xx
        fu
        0.0.1-SNAPSHOT
        ../pom.xml 
    
    4.0.0
    ca

    
        
        
            javax.servlet
            servlet-api 
            
        
        
            
            org.codehaus.jackson
            jackson-core-lgpl
            1.9.4 
        
    

cb项目的pom.xml


    
    
        com.xx
        fu
        0.0.1-SNAPSHOT
        ../pom.xml 
    
    
    4.0.0 
    cb 

    
         
            com.xx
            ca 
            0.0.1-SNAPSHOT
        
    

cp项目的pom.xml


    
        com.xx
        fu
        0.0.1-SNAPSHOT
        ../pom.xml 
    
    4.0.0
    cp
    war
    


二、聚合方式

分别创建三个项目fuproject、cap、cbp、cpp。fuproject作为父项目,cap、cbp、cpp作为子模块

fu创建时打包方式为pom;
cap、cbp创建时打包方式为jar;
cpp创建时打包方式为war(主要看插件是否也跟着继承过来)

fuproject项目的pom.xml


    4.0.0
    com.xx
    fuproject
    0.0.1-SNAPSHOT
    pom

    
        cap
        cbp
        cpp
    

    
        
            
            javax.servlet
            servlet-api
            2.5
        
    

    
        
            
                org.apache.maven.plugins
                maven-war-plugin
                3.3.1
            
        
    

cap项目的pom.xml


  4.0.0
  
  
    com.xx
    fuproject
    0.0.1-SNAPSHOT
  
  
  cap
  
 
   
   
       
       org.codehaus.jackson
       jackson-core-lgpl
       1.9.4    
   
  

cbp项目的pom.xml


    4.0.0
    
    
        com.xx
        fuproject
        0.0.1-SNAPSHOT
    
    
    cbp
    
        
            com.xx
            cap 
            0.0.1-SNAPSHOT
        
    

cpp项目的pom.xml


 4.0.0
  
  
    com.xx
    fuproject
    0.0.1-SNAPSHOT
  
  
  cpp
  war
  

注意:

1、无论继承还是聚合

如果父pom中使用的是
....
的方式,则子pom会自动使用pom中的jar包;

如果父pom使用

....

方式,则子pom不会自动使用父pom中的jar包,这时如果子pom想使用的话,就要给出groupId和artifactId,无需给出version

2、"聚合"在读取父的pom文件时去找到子项目的pom,但还是会分别去编译他们引入的依赖。这样就会导致pom文件引入的包重复!!于是我们引入了"继承"的概念,也就是形成"父子"关系,子pom可以引用到父pom中引入的依赖。

你可能感兴趣的:(maven父子项目引用(继承和聚合))