基于maven使用IDEA创建多模块项目

鉴于最近学习一个分布式项目的开发,讲一下关于使用IntelliJ IDEA基于Maven创建多模块项目的实际开发,可能有不合适的地方,但是项目是可以跑通的,也请有不足之处,都提出来,一起讨论下。

一. 项目工程目录

首先展示一下,最终整个项目的工程目录:

简单介绍一下目录结构:
common-parent为所有项目的父项目,主要用来管理所有项目使用的jar包及其版本。
common-utils为公共的工具类项目,继承父项目,它会被打成jar包供其它项目使用。
taotao-manager为我们自己的项目,继承与我们的父项目。
taotao-manager-pojo为我们自己项目的一个子模块,依赖与taotao-manager,打成jar包
taotao-manager-mapper为我们自己项目的一个子模块,依赖与taotao-manager-pojo,打成jar包
taotao-manager-service为我们自己项目的一个子模块,依赖与taotao-manager-mapper,打成jar包
taotao-manager-web为我们自己项目的一个子模块,依赖与taotao-manager-service,打成war包

二. 创建父工程

下面为具体操作:

1. 首先打开IntelliJ IDEA,按下面步骤来:

或者第一次打开IDEA,

2. 来到创建目录,选择Empty project,next

3. 来到New Project页面,填写project name,选择Project location,点Finish

等待IDEA加载完成,进行下一步

4. 选择File–>New–>Module,进入New Module页面:

5. 在New Module页面,按如下步骤操作:

6. 填写组织名称和项目名称,以及版本号

7. 配置本地maven目录及maven仓库配置文件

8. 创建父工程最后一步,给Module取名,及选择工作目录,选择完成

等待生成pom文件,注意修改打包方式为pom,修改pom文件如下:(由于pom文件较长,只给出部分,获取所有,请关注github)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>cn.william</groupId>
  <artifactId>common-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging><!--修改打包方式-->

  <name>common-parent</name>
  <url>http://maven.apache.org</url>

  <!--集中定义依赖版本号-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.version>4.12</junit.version>
    ...(省略)
  </properties>

  <dependencyManagement>
    <dependencies>
      <!-- 时间操作组件 -->
      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda-time.version}</version>
      </dependency>
      ...(省略)
  </dependencyManagement>

  <build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <!-- 资源文件拷贝插件 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.7</version>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <!-- java编译插件 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

三. 创建公共工具类

首先,公共工具类是继承自父项目common-parent的。

需要注意的一点是一点,为了项目看起来为分模块的形式(类似在eclipse中开发),在创建common-utils中有一步需要注意:

下一步特别注意,这一步会影响目录结构,

同样注意项目的打包方式为jar,和父项目有所不同。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>common-parent</artifactId>
    <groupId>cn.william</groupId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../common-parent/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>common-utils</artifactId>
  <packaging>jar</packaging><!-- 打成jar包 -->

  <name>common-utils</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <!-- jar包的依赖 -->
  <dependencies>
    <!-- 时间操作组件 -->
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
    </dependency>
    ...(省略)
  </dependencies>

</project>

三. 创建开发项目

创建开发项目taotao-manager,其创建步骤同上,同样是继承common-parent,同样修改其pom文件,详细如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>common-parent</artifactId>
    <groupId>cn.william</groupId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../common-parent/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>taotao-manager</artifactId>
  <packaging>pom</packaging>

  <name>taotao-manager</name>
  <url>http://maven.apache.org</url>
  <modules>
    <module>taotao-manager-pojo</module>
    <module>taotao-manager-mapper</module>
    <module>taotao-manager-service</module>
    <module>taotao-manager-web</module>
  </modules>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <!-- 依赖管理 -->
  <dependencies>
    <dependency>
      <groupId>cn.william</groupId>
      <artifactId>common-utils</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
  </dependencies>

  <build>
    <!-- 配置插件 -->
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <configuration>
          <port>8080</port>
          <path>/</path>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

四. 创建开发项目子模块

创建taotao-manager-pojo,mapper,service,web等子模块,详细如下:

右键点击taotao-manager,选择New,Module,

这一步注意,与创建common-utils时不同,是将其子模块添加到taotao-manager目录下的:

maven的相关配置,保持默认:

注意子模块所在目录就好:

创建taotao-manager下其它子模块

上面说的时创建taotao-manager-pojo子模块,另外三个子模块的创建方式与其类似,有一点不同时,在创建taotao-manager-web子模块时,maven项目的类型选择如下:

修改子模块的pom文件

子模块pojo,mapper,service的打包方式全为jar,只有web子模块打包为war包。

pojo子模块,pom.xml详细如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>taotao-manager</artifactId>
    <groupId>cn.william</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>taotao-manager-pojo</artifactId>
  <packaging>jar</packaging>

  <name>taotao-manager-pojo</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

</project>

mapper子模块依赖与pojo子模块,pom.xml详细如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>taotao-manager</artifactId>
    <groupId>cn.william</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>taotao-manager-mapper</artifactId>
  <packaging>jar</packaging>

  <name>taotao-manager-mapper</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <!-- 依赖与pojo子模块 -->
    <dependency>
      <groupId>cn.william</groupId>
      <artifactId>taotao-manager-pojo</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <!-- Mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
    </dependency>
    <dependency>
      <groupId>com.github.miemiedev</groupId>
      <artifactId>mybatis-paginator</artifactId>
    </dependency>
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
    </dependency>
    <!-- MySql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- 连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
    </dependency>

  </dependencies>
</project>

service子模块依赖与mapper子模块,pom.xml详细如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>taotao-manager</artifactId>
    <groupId>cn.william</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>taotao-manager-service</artifactId>
  <packaging>jar</packaging>

  <name>taotao-manager-service</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <!-- 依赖与mapper子模块 -->
    <dependency>
      <groupId>cn.william</groupId>
      <artifactId>taotao-manager-mapper</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <!-- Spring -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
    </dependency>
    ...(省略)
  </dependencies>
</project>

web子模块依赖与service子模块,pom.xml详细如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <parent>
    <artifactId>taotao-manager</artifactId>
    <groupId>cn.william</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>taotao-manager-web</artifactId>
  <packaging>war</packaging><!--打成war包-->
  <name>taotao-manager-web Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <!-- 依赖于service -->
    <dependency>
      <groupId>cn.william</groupId>
      <artifactId>taotao-manager-service</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    ...(省略)
  </dependencies>
  <build>
    <finalName>taotao-manager-web</finalName>
  </build>
</project>

五. 运行项目

创建index.jsp

至此,项目创建已经完成,我们可以在taotao-manager-web的webapp目录下创建index.jsp,详情如下:

使用tomcat插件

我们使用maven的tomcat插件来运行项目,在此之前,确保在taotao-manager的pom文件中配置了tomcat的插件:

...(省略)
<build>
  <!-- 配置插件 -->
  <plugins>
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <configuration>
        <port>8080</port>
        <path>/</path>
      </configuration>
    </plugin>
  </plugins>
</build>
...(省略)

配置Maven Tomcat Plugin运行web项目

(1) 添加新配置

(2) 点击运行,或者点击旁边的debug

(3) 出项错误

出现错误,可能是common-parent和common-utils没有安装到本地仓库,出现的错误是找不到common-utils的jar包,那就需要我们安装一下。

等待将jar包安装到本地仓库,稍微有点慢可能,耐心等。。。

安装完成之后,再次运行,出现下面的信息,证明运行成功:

通过浏览器访问:

至此,我们的项目环境搭建成功,接下来就是实际的项目开发了。

声明:

① 关于上面代码中出现的省略的部分,是由于内容偏长,所以省略,想要查看完成项目,请查看本人的github,地址:
https://github.com/williamHappy/tao-shopping-mall

② 关于上面有任何不足之处,敬请各位谅解,毕竟本人技术有限,也在学习阶段,也可以给出合理意见,共同改进。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解使用Maven构建多模块项目(图文)

    Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理.尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块. 项目结构如下: test-hd-parent (父级) ---pom.xml ---test-hd-api (第三方接口层) ----pom.xml ---test-hd-foundation (基础工具层) ----pom.xml ---test-hd-resource (资源层) ----pom.xml -

  • SpringBoot创建maven多模块项目实战代码

    工作中一直都是一个人奋战一人一个项目,使用maven管理,看这个也挺好,但是总感觉没有充分发挥maven的功能,于是研究了一下这个,网上关于这个的文章很多,虽然不是很好,但我从中收获了很多,在这集百家所长,写一份实战记录,大家跟着我一块做吧! 声明:构建多模块不是最难的,难点是如果把多模块打包成一个执行jar. SpringBoot官方推崇的是富jar,也就是jar文件启动项目,所以如果在这里打war包我不具体介绍,如果需要的朋友可以给我留言,我回复. 建议clone项目后,在看教程(有不足的地

  • maven多模块工程打包部署的方法步骤

    一般maven多模块工程结构如下图,图中分为dao数据层和上层web层(当然还可以有service层),在进行多模块划分的时候,一般将dao层采用jar进行打包,web层进行war打包.在进行war包部署时,发现dao是以jar包形式存在于lib包目录下,如果在部署服务器上需要进行相关配置修改会比较麻烦.因此研究了下用maven进行合并打包的方法: 1.确保dao pom.xml中有以下配置 <resources> <resource> <directory>${bas

  • IntelliJ IDEA创建maven多模块项目(图文教程)

    项目主要分成3个模块,wms-root为父模块,wms-core和wms-app(webapp类型的模块)为子模块. 一.Parent Project,创建wms-root父模块. 1.依次点击:File->New->Project 2.左侧面板选择maven(不要选择Create from archetype选项),如下图,点击Next即可. 3.依次补全如下信息,点击Next 4.输入项目名字.如ModuleProject,我们主要是在这个项目下创建我们的子模块. 5.这样我们就创建好了一

  • 详解Maven 搭建spring boot多模块项目(附源码)

    本文介绍了Maven 搭建spring boot多模块项目,分享给大家,具体如下: 备注:所有项目都在idea中创建 1.idea创建maven项目 1-1: 删除src,target目录,只保留pom.xml 1-2: 根目录pom.xml可被子模块继承,因此项目只是demo,未考虑太多性能问题,所以将诸多依赖.都写在根级`pom.xml`,子模块只需继承就可以使用. 1-3: 根级pom.xml文件在附录1 1-4: 依赖模块 mybatis spring-boot相关模块 2.创建子模块(

  • Git和Maven的子模块简单实践

    当一个产品或者项目由大量独立模块组成时,想要从 Git 挨个下载下来导入 IDE 查看并不容易,此时可以结合使用 Git 和 Maven 的子模块来处理这种场景. 通过 Git 子模块可以自动批量下载所有关联的项目,通过 Maven 子模块可以批量导入到 IDE 中,结合这两者可以很容易的管理和查看项目. 创建子模块项目 打开 Git Bash,创建一个空目录并进入: $ mkdir erp-submodules $ cd erp-submodules/ 把当前目录初始化为 Git 仓库 $ g

  • Maven多模块工程Module开发(图文教程)

    使用IDEA创建多模块开发 功能模块来分module 跟java的package类似,一般是按照的功能模块分module,比如:sso/cas/portal/activity/system,具体可根据需要 例如,在电商系统中如下module --module-test-common公共部分 --module-test-picture图片 --module-test-order订单 --module-test-checkout购物车 --module-test-pay支付 --module-tes

  • IntelliJ IDEA本地代码提交到github网站不显示与本地不同步问题的解决办法

    以前,使用github(git)结合 IntelliJ IDEA ,可以把自己本地的测试代码,使用github网站,添加到版本管理. 这样就可以很好的管理自己的测试代码. 这样子做,的确是极好的,不至于丢失自己本地的测试代码.也不怕随意的修改.因为有历史记录.就像公司的项目代码一样. 但是,我一般都是在 IntelliJ IDEA 编辑器里面修改,提交代码.很少关心github网站上的测试项目是什么样的. 直到有次,打开这个网站,发现,我的最新更新记录,也就是最后一次代码提交记录,是四个月前的.

  • SpringBoot+Maven 多模块项目的构建、运行、打包实战

    本篇文章主要介绍了SpringBoot+Maven 多模块项目的构建.运行.打包,分享给大家,具体如下: 项目使用的工具: IntelliJ IDEA JDK 1.8 apache-maven-3.3.9 项目的目录: 主项目 springboot-multi 子模块 entity.dao.service.web 一.使用IDEA创建一个SpringBoot项目 : File -> new -> Project 项目名称为springboot-multi 二.删除项目中的src目录,把pom.

  • 利用github搭建个人maven仓库的方法步骤

    缘起 之前看到有开源项目用了github来做maven仓库,寻思自己也做一个.研究了下,记录下. 简单来说,共有三步: deploy到本地目录 把本地目录提交到gtihub上 配置github地址为仓库地址 配置local file maven仓库 deploy到本地 maven可以通过http, ftp, ssh等deploy到远程服务器,也可以deploy到本地文件系统里. 例如把项目deploy到/home/hengyunabc/code/maven-repo/repository/目录下

  • 如何将maven项目划分为多个模块

    多模块拆分的必要性 使用Java技术开发的工程项目,无论是数据处理系统还是Web网站,随着项目的不断发展,需求的不断细化与添加,工程项目中的代码越来越多,包结构也越来越复杂这时候工程的进展就会遇到各种问题: (1)不同方面的代码之间相互耦合,这时候一系统出现问题很难定位到问题的出现原因,即使定位到问题也很难修正问题,可能在修正问题的时候引入更多的问题. (2)多方面的代码集中在一个整体结构中,新入的开发者很难对整体项目有直观的感受,增加了新手介入开发的成本,需要有一个熟悉整个项目的开发者维护整个

随机推荐