`
uule
  • 浏览: 6358574 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

Maven多模块项目管理小结

 
阅读更多

问题

下面是一个简略的项目结构图

Parent
`------ childA(BusinessLayer)
          `--- pom.xml

`------ childB(WebLayer)
         `--- pom.xml

`------ pom.xml

1、Parent怎么能找到childA和childB呢?

在maven中,parent模块组织好childA和childB,叫做"聚合",多个模块联合编译。实现起来很简单,只需要在parent的pom文件里加入以下内容。

<modules>
   <module>childA</module>
   <module>childB</module>
</modules>

2、是不是这样写就完全ok了?

这样只是告诉maven编译器,在读取parent的pom文件时去找到childA和childB,但还是会分别去编译他们引入的依赖。这样就会 导致pom文件引入的包重复!!于是我们引入了"继承"的概念,也就是形成"父子"关系,子pom可以引用到父pom中引入的依赖。具体做法如下:

在parent中,写入以下内容,其中"*"标识的行可以组成一个路径,通过这个路径可以在maven仓库中找到这个pom文件!本例中,path 为M2_Path/com/sang/main/Parent-Moduel/1.0.2/xxxx-1.0.2.pom。所以这三个标签是必须的!!!

<modelVersion>4.0.0</modelVersion>  
<groupId>com.sang.main</groupId>              *
<artifactId>Parent-Moduel</artifactId>       *
<version>1.0.2</version>           *
<packaging>pom</packaging>  
<name>Simple-main</name>

父pom写好了,子pom就通过<parent>标签继承父pom的依赖,如下:

<parent>
   <groupId>com.sang.main</groupId>
   <artifactId>Parent-Moduel</artifactId>
   <version>1.0.2</version>
   <relativePath>../pom.xml</relativePath>  <!--本例中此处是可选的-->
</parent>

值得注意的是<relativePath>标签,如果pom的层次关系就像本例中的那样只隔一层,则可以省略这个。maven同样可以找到子pom。

子pom中引入<parent>标签后,就会从父pom继承<version>等属性了,例如childA只需要再加入如下内容即可!

<modelVersion>4.0.0</modelVersion>  
<groupId>com.sang.business</groupId>     <!--和artifactId一起唯一标识这个jar文件-->
<artifactId>ChildA-module</artifactId>
<packaging>jar</packaging>         <!--指明打包类型-->
<name>childA</name>

3、如何添加依赖?

maven可以让我们方便地管理jar包依赖,具体做法如下:

<dependencies>
     <dependency>   <!--添加一个jar包依赖-->
         <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
</dependencies>

如果不通过继承,则需要在每个pom中加入这样的依赖,这样子pom对应的模块可以引用到这个jar包。上面提到的重复引用jar包,可以通过下面的方式解决:

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

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

子pom如果需要引用该jar包,则直接引用即可!不需要加入<version>,便于统一管理。此外也可以加入仅在子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>

4、除了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>

5、如果子pom间存在引用关系,比如childA引用到了childB的jar包,该怎么做?

<dependency>
   <groupId>com.module</groupId>
   <artifactId>childA</artifactId>       <!--加上childA的依赖-->
   <version>1.0.0</version>
</dependency>

小结

本文只是从多模块组织的角度说明了maven的基本用法, 当然,其他的复杂用法还是要参考maven手册

分享到:
评论

相关推荐

    maven多模块项目(简单实例)

    总结来说,Maven多模块项目是一种优秀的代码组织方式,它通过模块化的结构提高了代码的可读性和可维护性,同时也简化了构建和依赖管理。在"ssm_modules"实例中,我们可以学习到如何根据SSM框架创建和配置多模块项目...

    maven多模块项目

    总结一下,Maven多模块项目是大型Java项目的一种优秀架构,它有助于提高开发效率和代码质量。与Jetty的集成则让开发过程更加便捷,允许快速迭代和测试。在创建和维护这样的项目时,理解Maven的配置、模块依赖以及...

    使用Maven构建多模块项目

    Maven作为Java领域广泛使用的构建工具,提供了强大的支持来管理多模块项目。本文将深入探讨如何利用Maven构建多模块项目,以及在实际操作中需要注意的关键点。 1. Maven多模块项目结构: Maven多模块项目通常遵循...

    maven构建多模块项目

    总结来说,Maven构建多模块项目能够帮助开发者有效地组织大型项目,通过父子项目结构和依赖管理,实现模块间的解耦和协同开发。"simple-parent"项目就是一个典型的例子,它展示了如何创建和管理一个包含多个子模块的...

    ssm+maven多模块项目搭建

    总结起来,"ssm+maven多模块项目搭建"是一个涉及Spring、SpringMVC、Mybatis和Maven四个关键技术的项目实践,它展示了如何在Java Web开发中运用这些工具进行模块化设计和构建,以达到提高开发效率和代码质量的目标。...

    maven多模块空项目

    五、Maven多模块项目管理 1. **构建与打包**:使用`mvn clean install`命令,Maven会自上而下编译、测试并打包所有模块。 2. **版本控制**:在版本控制系统(如Git)中,父项目和子项目作为单独的仓库进行管理,方便...

    maven多模块项目搭建

    Maven 多模块项目搭建是一个常见的Java开发任务,它允许开发者将大型项目分解成更小、更易管理的模块,每个模块专注于特定的功能或组件。在本教程中,我们将探讨如何使用Eclipse集成开发环境(IDE)和Maven插件来...

    maven分模块小demo

    总结来说,"maven分模块小demo"是一个典型的Maven多模块项目示例,它演示了如何利用Maven进行项目结构的划分、依赖管理、构建和部署。对于初学者而言,这是一个理解Maven工作原理和实践项目组织的良好起点。通过深入...

    使用Maven管理进行多模块开发

    二、Maven多模块项目结构 在多模块开发中,Maven项目通常采用父模块(parent)和子模块(child)的结构。例如,`app-parent`这个压缩包很可能就是一个父模块项目,包含了若干个子模块的配置信息。父模块主要用于定义...

    Springboot整合dubbo构建maven多模块项目 - 集成 mybatis

    本文将详细讲解如何使用Spring Boot整合Dubbo,并在Maven多模块项目中集成MyBatis,帮助开发者构建高效、可扩展的微服务架构。 Spring Boot是一个基于Spring框架的快速开发工具,它简化了初始化配置,提供了自动...

    maven简单案例源码(多模块项目)

    Maven多模块项目就是这样一个概念,它允许我们将一个大项目分解为多个小的、相互依赖的子项目,每个子项目都可以独立开发、测试和打包。这种结构有助于团队协作,同时便于管理和维护。 ** Maven的项目对象模型(POM...

    Maven建立多模块项目-图文并茂--入门级别.doc

    ### Maven建立多模块项目知识点详解 #### 一、Maven与多模块项目基础概念 - **Maven**:Apache Maven 是一款项目管理和构建工具,基于项目对象模型(POM),通过一组规范完成项目的构建、报告和文档。Maven 的目标...

    Maven构建多模块项目

    总结来说,Maven构建多模块项目的能力使得大型项目的管理变得有序且高效。`demo-parent`实例展示了如何设置和组织这样的项目,通过父子模块间的继承关系,统一管理和共享资源。掌握这一技能对于任何Java开发者来说都...

    maven创建多模块web项目.docx

    在创建多模块项目时,我们通常会为每个模块创建一个独立的子目录,并在每个子目录下配置自己的pom.xml。在给定的例子中,项目包含三个模块:`trade-core`、`trade-client`和`trade-server`。 创建这些模块的步骤...

    Maven多模块web应用实例

    总结来说,"Maven多模块web应用实例"是一个展示如何使用Maven进行高效项目管理的示例。通过这个实例,开发者可以学习到如何构建一个结构清晰、易于维护的Web项目,理解Maven的核心概念,如依赖管理、模块化、插件...

    eclipse下创建ssm+MySQL+maven多模块项目

    总结来说,创建一个SSM+MySQL+maven多模块项目涉及以下步骤: 1. 设置Eclipse的Maven环境。 2. 创建父项目,定义共用配置。 3. 创建子模块,分别对应Spring MVC、Struts2、MyBatis等。 4. 配置数据库连接和相关依赖...

    maven分模块的web工程

    同时,通过继承父模块的配置,所有子模块可以保持一致的构建环境,简化了项目管理。 **构建与运行** 要构建这个分模块的Web工程,你需要在命令行或者IDE(如IntelliJ IDEA或Eclipse)中执行Maven的生命周期命令,...

    maven多模块聚合的springboot+duubo+zokeeper+Redis整合demo

    本项目“maven多模块聚合的springboot+duubo+zookeeper+Redis整合demo”就是一个很好的示例,它展示了如何利用Maven进行模块化管理,并将Spring Boot、Dubbo、Zookeeper和Redis这四大核心组件有效地集成在一起。...

    SSM+maven+多模块整合宿舍管理项目系统.zip

    总结起来,SSM+maven+多模块整合宿舍管理项目系统是一个综合运用了多种Java技术的实践案例,涵盖了Web开发的多个层面,对于学习和理解SSM框架、Maven构建工具以及多模块项目管理有着重要的参考价值。通过这样的项目...

Global site tag (gtag.js) - Google Analytics