多模块项目父子pom设置

父模块pom配置

父pom是为了抽取统一的配置信息和依赖版本控制,方便子pom直接引用,简化子pom的配置。
下面介绍下父pom的配置中需要注意的一些地方:

  • 父模块的打包类型
    多模块项目中,父模块打包类型必须是pom
    需要使用modules标签列出所有的子模块,modules中的每个module,都是另外一个maven项目。

    <modules>
        <module>../crowdfunding-commonmodule>
    modules>
    
  • 继承设置
    继承是maven中很强大的一种功能,继承可以使子pom获得parent中的各项配置,对子pom进行统一的配置和依赖管理。父pom中的大多数元素都能被子pom继承。使用spring boot时默认继承spring-boot-starter-parent,比如:

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.1.4.RELEASEversion>
        <relativePath/> 
    parent>
    
  • 使用properties控制依赖包的版本号,便于版本维护
    在properties标签中,添加各依赖包的版本号,然后在dependency中直接引用该依赖版本号的值即可。

  • 使用dependencyManagement管理依赖版本号
    一般在项目最顶层的父pom中使用该元素,让所有子模块引用一个依赖而不用显式的列出版本号。maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

<properties>
    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
    <java.version>1.8java.version>
 
    
    <dubbo.version>2.5.3dubbo.version>
    <zkclient.version>0.10zkclient.version>
properties>
 
<dependencyManagement>   
    <dependencies>
        
        
            
            
        
 
        
            
            
            
        
 
        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>dubboartifactId>
                
            <version>${dubbo.version}version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframeworkgroupId>
                    <artifactId>springartifactId>
                exclusion>
            exclusions>
        dependency>
 
        <dependency>
            <groupId>com.101tecgroupId>
            <artifactId>zkclientartifactId>
                
            <version>${zkclient.version}version>
        dependency>
    dependencies>
 
dependencyManagement>

子模块pom配置

  • 继承设置
    子模块的parent要使用顶层的父模块.

      <parent>
        <groupId>com.hcgroupId>
        <artifactId>crowdfunding-parentartifactId>
        <version>0.0.1-SNAPSHOTversion>
      parent>
    

2、依赖设置

父模块pom中使用dependencyManagement来管理的依赖,在子模块pom中就不需要再写版本号了,exclusion元素也不需要再写。

你可能感兴趣的:(#,Maven)