Maven中多模块的创建,依赖及主子pom之间的依赖继承

Maven中多模块的创建及依赖继承

在项目右键,new->module就可以创建新的模块
建立如图所示的模块
在这里插入图片描述

子pom会自动使用父pom中的依赖(jar包)

此时,各自pom.xml文件如下(引入了"继承"的概念,也就是形成"父子"关系,子pom可以引用到父pom中引入的依赖):
parent(bigdata)

 <artifactId>bigdata</artifactId>
 <modules>
        <module>common</module>
        <module>behavior</module>
    </modules>

childA(behavior)

   <parent>
       <artifactId>bigdata</artifactId>
       <groupId>com.cebbank</groupId>
       <version>1.0-SNAPSHOT</version>
   </parent>
   <artifactId>behavior</artifactId>

childB(common)

  <parent>
      <artifactId>bigdata</artifactId>
      <groupId>com.cebbank</groupId>
      <version>1.0-SNAPSHOT</version>
  </parent>
  <artifactId>common</artifactId>

父模块作版本管理不实际依赖,子模块按需依赖

主pom中把依赖通过引起来,表示子pom可能会用到的jar包依赖:

<dependencyManagement>
   <dependencies>
      <dependency>
           <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.5</version>
      </dependency>
   </dependencies>
</dependencyManagement>

子pom如果需要引用该jar包,则直接引用即可!不需要加入,便于统一管理。此外也可以加入仅在子pom中用到的jar包,比如:

<dependencies>
   <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>   <!--此处不再需要verison了!-->
   </dependency>
   <dependency>
       <groupId>org.codehaus.jackson</groupId>
       <artifactId>jackson-core-lgpl</artifactId>
       <version>1.9.4</version>    <!--当然也可以加入只在这个子模块中用到的jar包-->
   </dependency>
</dependencies>

dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

这样做的好处:统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的是相同的成果,因此,在顶层pom中定义共同的依赖关系。同时可以避免在每个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。

除了jar包依赖,插件也可以通过这样的方式进行管理

<!-- mainModule -->
<build>
   <pluginManagement>
      <plugins>
          <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-source-plugin</artifactId>
               <version>2.1.1</version>
          </plugin>
      </plugins>
   </pluginManagement>
</build>
 
<!-- childA -->
<build>   
   <plugins>
      <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-source-plugin</artifactId>
      </plugin>
   </plugins>
</build>

Maven中多子模块的依赖关系

子pom间存在引用关系:common被引用到了behavior

IDEA中的操作
在这里插入图片描述
(behavior)的pom文件:

   <dependencies>
       <dependency>
           <groupId>com.cebbank</groupId>
           <artifactId>common</artifactId>
           <version>1.0-SNAPSHOT</version>
       </dependency>
   </dependencies>

Maven中多模块的调用及测试

在common中建Demo1的类:

public class Demo1 {
    public void test(){
        System.out.println("第一个测试方法");
    }
}

在behavior调用Demo1:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值