分模块构建Maven工程的方法步骤

分模块构建Maven工程Demo

1.分模块构建Maven分析

在企业项目开发过程中,由于项目规模庞大,业务复杂,参与的人员比较多,一般会通过合理的模块拆分将一个大型的项目拆分为N多个小模块,分别进行开发。而且拆分出的模块可以非常容易的被其他模块复用。

常见的拆分方式有两种:

  • 第一种:按照业务模块进行拆分,每个模块拆分成一个maven工程,例如将一个项目分为用户模块、订单模块、购物车模块等,每个模块对应就是一个maven工程
  • 第二种:按照进行拆分,譬如持久层、业务层、表现层等,每个层对应就是一个maven工程
  • 不管是上面哪种拆分方式,通常都会提供一个父工程,将一些公共的代码和配置提取到父工程中进行统一管理和配置。

1.1 Maven工程的继承

在Java语言中,类之间是可以继承的,通过继承,子类就可以引用父类中非private的属性和方法。

同样,在maven工程之间也可以继承,子工程继承父工程后,就可以使用在父工程中引入的依赖。 继承的目的是为了消除重复代码

被继承的Maven项目中的pom.xml文件中的定义是:

<groupId>com.hj</groupId>
  <artifactId>parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--父工程的打包方式必须为pom-->
  <packaging>pom</packaging>

被继承的maven工程通常称为父工程,父工程的打包方式必须为pom,
所以我们区分某个maven工程是否为父工程就看这个工程的打包方式是否为pom。 继承的Maven项目中的pom.xml文件中的定义是否为pom。

 <parent>
    <artifactId>parent</artifactId>
    <groupId>com.hj</groupId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../parent/pom.xml</relativePath>
  </parent>

继承其他maven父工程的工程通常称为子工程, 在pom.xml文件中通过parent标签进行父工程的继承。

1.2 maven工程的聚合

在maven工程的pom.xml文件中可以使用<modules>标签将其他maven工程聚合到一起,聚合的目的是为了进行统一操作。例如拆分后的maven工程有多个,如果要进行打包,就需要针对每个工程分别执行打包命令, 操作起来非常繁琐。这时就可以使用<modules>标签将这些工程统一聚合到maven工程中,需要打包的时候,只需要在此工程中执行一次打包命令,其下被聚合的工程就都会被打包了。

在<modules>标签中添加被聚合的Maven工程

1.3分模块构建maven工程具体实现

此案例分模块构建 整合一下SSM测试

1.3.1首先创建父工程

创建完毕会自动打开到pom.xml文件

首先声明<packaging>pom</packaging>
父工程的打包方式必须为pom。

随后加入SSM框架所需坐标的jar包版本锁定:
父工程中的pom文件中呢只用于jar包版本的锁定,
子工程用什么直接写坐标不用写version

<!--指定版本-->
 <properties>
    <spring.version>5.0.5.RELEASE</spring.version>
    <springmvc.version>5.0.5.RELEASE</springmvc.version>
    <mybatis.version>3.4.5</mybatis.version>
  </properties>
 <!--锁定jar版本-->
  <dependencyManagement>
    <dependencies>
      <!-- Mybatis -->
      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
      </dependency>
      <!-- springMVC -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${springmvc.version}</version>
      </dependency>
      <!-- spring -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

1.3.2. 构建子工程 maven_pojo

父工程上右键new -->Module- ->Maven

构建完毕后创建实体类对象

构建完毕 子工程pom文件中显示:

<!--表示当前maven工程继承了 maven_parent父工程-->
<parent>
  <artifactId>maven_parent</artifactId>
  <groupId>com.hj</groupId>
  <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<groupId>com.hj</groupId>
<artifactId>maven_pojo</artifactId>

此时父工程maven_parent的pom文件中就会自动的加入:
用于用于聚合其他其他maven工程的<modues>标签

子工程已经聚合在父工程中。

1.3.3. 构建子工程 maven_dao

构建dao层

构建完毕后创建相关类,添加配置文件;

在maven_dao模块的pom文件中 添加依赖

<dependencies>
 <!--在dao层的pom文件中加入pojo的坐标依赖-->
  <dependency>
      <groupId>com.hj</groupId>
      <artifactId>maven_pojo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <scope>compile</scope>
    </dependency>
  <!-- Mybatis和mybatis与spring的整合 -->
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
  </dependency>
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.1</version>
  </dependency>
  <!-- MySql驱动 -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.32</version>
  </dependency>
  <!-- druid数据库连接池 -->
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.9</version>
  </dependency>
  <!-- spring相关 -->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
  </dependency>
  <!-- junit测试 -->
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
  </dependency>
  </dependencies>

1.3.4. 构建子工程 maven_service

构建service层

构建完毕后创建相关类,添加配置文件

在maven_service模块的pom文件中 添加依赖

<!--这里用到了maven的依赖传递的特点,
 service直接依赖dao的坐标就无须再定义坐标-->
  <dependencies>
    <dependency>
      <groupId>com.hj</groupId>
      <artifactId>maven_dao</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <!--添加springMvc用到的坐标-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
    </dependency>
  </dependencies>

1.3.5. 构建子工程 maven_web

最后构建web模块

构建完毕后创建相关类,添加配置文件

在maven_web的pom文件中加入依赖

<!--这里用到了maven的依赖传递的特点
web直接依赖service的坐标就无须再定义坐标-->
  <dependency>
   <groupId>com.hj</groupId>
   <artifactId>maven_service</artifactId>
   <version>1.0-SNAPSHOT</version>
  </dependency>
 </dependencies>

1.3.6 项目整体结构

项目整体结构如右图所示:
1:maven_parent为父工程,其余工程为子工程,都继承了
父工程maven_parent

2:maven_parent工程将其子工程都进行了聚合
3:子工程之间存在依赖关系,比如maven_dao依赖
maven_pojo、maven_service依赖maven_dao、
maven_web依赖maven_service

1.3.7 测试运行

把maven_web模块添加到tomcat中

分模块构建Maven工程,测试运行成功。

到此这篇关于分模块构建Maven工程的方法步骤的文章就介绍到这了,更多相关分模块构建Maven 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Maven分模块开发执行指令失败的问题

    Maven工程分模块开发完成 父工程配置了 tomcat7插件,运行 run命令 执行run指令时失败,报错信息如下: D:\java\JDK8\bin\java.exe "-Dmaven.multiModuleProjectDirectory=D:\Idea2020\IntelliJ IDEA 2020.1\MavenProject_parent" -Dmaven.home=D:\apache-maven-3.6.3 -Dclassworlds.conf=D:\apache-mave

  • 分模块构建Maven工程的方法步骤

    分模块构建Maven工程Demo 1.分模块构建Maven分析 在企业项目开发过程中,由于项目规模庞大,业务复杂,参与的人员比较多,一般会通过合理的模块拆分将一个大型的项目拆分为N多个小模块,分别进行开发.而且拆分出的模块可以非常容易的被其他模块复用. 常见的拆分方式有两种: 第一种:按照业务模块进行拆分,每个模块拆分成一个maven工程,例如将一个项目分为用户模块.订单模块.购物车模块等,每个模块对应就是一个maven工程 第二种:按照层进行拆分,譬如持久层.业务层.表现层等,每个层对应就是一

  • 使用jekins自动构建部署java maven项目的方法步骤

    1.下载jenkins 地址:https://jenkins.io/index.html 本人下载了2.19.3版本的war包:jenkins.war 2.安装jenkins 拷贝jenkins.war到tomcat的webapps文件夹下,如果tomcat是启动的,jenkins项目会自动解压启动的,如果tomcat是停止的,需要启动tomcat服务,进入bin文件夹,linux环境下执行 ./startup.sh即可启动服务,windows下双击startup.bat即可. 然后,访问地址:

  • 使用Nexus搭建Maven私服的方法步骤

    序言 maven私服类似.net中的nuget包服务器 官网/版本收费 首先要吐槽官网慢的一比,下载不下来. 地址:https://www.sonatype.com/ 下载地址:https://www.sonatype.com/download-nexus-repo-oss 版本/收费/免费:Nexus Repository Manager 仓库管理有2个版本,专业版和oss版,oss版是免费的,专业版是收费的,我们使用oss版. 简介 nexus是一个强大的maven仓库管理器,它极大的简化了

  • IDEA 离线迁移Springboot工程的方法步骤

    在工作中可能会遇到需要在内网环境搭建SpringBoot工程的需要,下面我们来搭建一个离线SpringBoot工程 准备工作: 在线搭建好的SpringBoot工程,目的是获取maven下载好的jar包和导入内网的工程源码,jar包的目录可在file->settings->Build,Execution,Deployment->Build Tools->Maven,Local repository中找到. 将repository目录压缩,将工程也压缩,拷贝到内网机中.例如:我的工程

  • IDEA 创建一个Mybatis Maven项目的方法步骤(图文)

    第一步:先新建一个工程 直接next就行了,不用选内容,不然他会下载骨架会卡很久 第一个箭头是项目名称,第二个箭头是项目路径,根据自己需要修改就行了.新建好的项目是这样的. 第二步:我们需要添加一个web框架支持 右键你的项目然后选择Add Framework那一项. 选中Web Application点击ok. 这样项目结构就有了,重点是啥都不用调了很方便. 第三步:去配置Tomcat 选择Tomcat Server下面的Local 这里选择你的Tomcat在哪里 按照箭头步骤来从上到下把工程

  • IDEA自定义Maven archetype的方法步骤

    目录 为什么要自定义archetype Archetypemaven项目的组成 创建自己的骨架结构 创建maven工程 骨架创建 骨架安装 使用自己创建的自定义骨架 添加骨架 为什么要自定义archetype 在创建Maven的项目时我们发现了一个很不方便的问题,就是每次创建Maven的工程的时候,都需要选择一个骨架,但是每个骨架都需要删除一部分东西才行,在平时开发中,如果是分布式项目,有可能会频繁创建子项目,每次都要删除不要的文件然后拷贝我们要的文件,例如弹簧配置,web.xml中配置等.这样

  • 使用Maven Archetype插件构建Maven工程原型模板的实例

    创建原型模板 1.在空目录运行archetype:generate上面的命令,待下载完必要的jar包后,首先需要输入内置的原型编号: Choose archetype: 1: internal -> org.apache.maven.archetypes:maven-archetype-archetype (An archetype which contains a sample archetype.) 2: internal -> org.apache.maven.archetypes:ma

  • Flutter集成到已有iOS工程的方法步骤

    前言 之前写过一篇介绍flutter集成到Android工程的文章,这次总结记录一下自己把flutter集成到iOS的流程,以及遇到的问题以及和解决方法供大家参考. 创建flutter_module 要在iOS工程中集成flutter,首先我们需要创建一个flutter_module,创建的方法有两种: 使用Android studio创建 使用Android studio创建在上一篇新版Flutter集成到已有Android项目中有介绍,这里不再赘述. 使用flutter命令创建 在指定目录下

  • 使用svn管理Maven项目的方法步骤

    首先,在学习这一块时,要先有eclipse中使用svn的基础:https://www.jb51.net/article/194373.htm 0. 在svn服务器中新建一个仓库 在SVN服务器的安装目录下进入bin文件夹,双击VisualAVN Server.msc即可弹出VisualAVN Server窗口 先创建一个新的仓库,右键[Repositories]-[Create New Repository...] 创建maven项目之前,先集成一下它的环境,参考:https://www.jb5

  • idea克隆maven项目的方法步骤(图文)

    一定要注意重新导入时,根目录的结构 一.idea从github上克隆maven项目 1.选择Check Out from Version Control,点击git 2.将自己项目在github上的项目url复制上 3.问你创建是否在***目录下创建idea项目,点击yes 4.注意 这里时选择import 不要选create 我知道你本地没有文件 这里应该是从远程导入文件 5.一定要注意修改根目录的位置 6.这是修改根目录后一路next 即可 二.maven项目导入之后的工作 修改maven的

随机推荐