Maven中如何管理多模块项目的依赖关系

Maven 中如何管理多模块项目的依赖关系

平时在查看项目的过程中,发现包的依赖关系及其随便,在各个子模块中都各自引入相应的依赖包,有些时候重复导入了也不会发觉。
在参考alibaba dubbo的源码之后,做出如下总结(别人家的代码 ==!)

groupId:组织标识,一般为:公司网址的反写+项目名
artifactId:项目名称,一般为:项目名-模块名

1.首先建一个空的maven项目,项目只需要一个pom.xml文件

交代一下我的demo

项目(root)的groupIdcom.nezha.learn.demo

项目名称 artifactIddemo

该项目有三个子模块:


demo-redis

demo-parent

demo-juc

2.通过IDEANew > Module来构建多个模块

其中的pom.xml文件如下:



    4.0.0

    com.nezha.learn.demo
    demo
    pom
    1.1-SNAPSHOT
    
    
        
        demo-redis
        
        demo-parent
        
        demo-juc
    

    
        
            
                org.apache.maven.plugins
                maven-release-plugin
                2.4.1
                
                    true
                
            
        
    

3.创建一个专门管理依赖包的模块

同样,该模块只有一个pom.xml文件



    
        demo
        com.nezha.learn.demo
        1.1-SNAPSHOT
        ../pom.xml
    
    4.0.0

    pom
    demo-parent

    
    
        2.9.0
        1.5.2.RELEASE
    

    
    
        
            
            
                redis.clients
                jedis
                ${jedis.version}
            
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

注意此处的artifactId是项目名称,因为所有子模块的依赖都在项目rootpom.xml中定义的。

4.在子模块中引入demo-paren的依赖



    
        demo-parent
        com.nezha.learn.demo
        1.1-SNAPSHOT
        ../demo-parent/pom.xml
    
    4.0.0

    demo-juc

    
        
            org.springframework.boot
            spring-boot-starter
        

        
            ${project.groupId}
            demo-redis
            ${project.version}
        
    

注意此处的artifactIddemo-parent
此时引入的spring依赖是不需要加上版本号的
然后${project.groupId}${project.version用于指代项目和版本。

如何更新所有子模块的版本号

这个也好解决,Maven有插件鸭!

在父级的pom.xml中加个插件就OK了,plugins > release > update-versions

    
        
            
                org.apache.maven.plugins
                maven-release-plugin
                2.4.1
                
                    true
                
            
        
    

maven的pom文件报错: must be "pom" but is "jar"

parent工程的pom.xml文件的project节点下加入如下节点:

pom

参考文献

  1. @Maven POM 详解:https://www.jianshu.com/p/8417a94c4d94
  2. 使用maven-release-plugin自动化版本发布https://blog.csdn.net/shenchaohao12321/article/details/79302791
  3. spring dubbo的源码:https://github.com/apache/incubator-dubbo-spring-boot-project

你可能感兴趣的:(Maven中如何管理多模块项目的依赖关系)