在Eclipse中创建Maven多模块工程的例子

更多0
 

如果,你需要创建多个项目,项目之间即独立又有关系,那么创建一个Maven多模块项目是个非常好的选择,也非常cool!怎么在Eclipse里面创建多模块工程,以及需要注意哪些地方,我在这里做个简单的介绍。

一、准备

若想在Eclipse里面做这些的话,那么在做这一切前,请确认你是否已经在eclipse里面安装了maven插件。如果没有装插件,那只能通过命令行去做了。

好,现在假设已经在Eclipse里面装了maven插件,那么我们一起用Eclipse来创建Maven多模块项目吧!

二、先创建父项目

  1. 在Eclipse里面New -> Maven Project
  2. 在弹出界面中不要选择“Create a simple project”(这样就可以使用archetype来创建项目)
  3. 使用默认的Archetype(默认:GroupId:org.apache.maven.archetypes,Artifact Id:maven-archetype-quickstart)
  4. 设置工程的参数,见下图
  5. 点击完成

这样,我们就按常规模版创建了一个Maven工程。我们还需要对这个工程进行修改。

因为,这是一个父项目,不需要有什么源码,那么,我们在Eclipse中将这个工程下的不用的目录都删除,仅留下pom.xml文件就行了。删除后的目录结构,如下图:

工程里面还有个Maven Dependencies,别管他,后面会让他自动消失。

另外,还需把pom.xml中的<packaging>jar</packaging>修改为<packaging>pom</packaging>

这时,可能Eclipse中会显示工程报错,根据提示操作,选择工程然后点击弹出菜单 Maven -> Update Project,于是Ok了。

三、创建子项目

  1. 选中刚建的父项目,在弹出菜单中点击 New -> Maven Module;
  2. 如图配置
  3. 使用默认的Archetype(默认:GroupId:org.apache.maven.archetypes,Artifact Id:maven-archetype-quickstart)
  4. 完成工程配置,见下图
  5. 点击完成

这样一个子项目就创建完成了,在文件系统中,子项目会建在父项目的目录中。在父目录中运行mvn test等命令,所有的子项目都会按顺序执行。

细心一点的人,可能会发现,通过这个步骤创建子项目的同时,会修改父项目的pom.xml,增加了类似下面的信息:

<modules>
<module>module-children1-demo</module>
</modules>

这个信息,就是标记有哪些子模块。

重复创建子项目的步骤,可以创建多个子项目。

四、优化配置

虽然上面的步骤,可以完成多模块的创建,但是创建出来的多模块,在一个程序员的眼里,还是挺别扭的,怎么回事呢?对,存在重复。那让我们重构吧。

按上面步骤创建的子项目,在pom.xml中有个parent节点,所以,他可以继承父项目的相关信息。没错,父子项目中存在继承关系。

在子项目的pom.xml中,子项目的groupIdversion一般和父项目相同,那么可以把子项目的这两个参数删除,这样会自动继承父项目的取值。

同样,如果其他的一些属性,所有子项目都是一样的,那么可以上移到父项目中设置,子项目中无需重复设置。比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>可以仅在父项目中设置一次。

除了这种情况以外,还有一种情况,就是依赖和插件。依赖和插件的情况是这样,某一个依赖或插件可能会被大部分子项目所使用,但是也可能有些子项目不需要使用,这样使用上述的方式,简简单单地进行继承就不合适了。

Manen提供dependencyManagementpluginManagement两个标签。使用这两个标签,可以在父项目中统一管理依赖和插件的配置参数,比如版本号啥的。而在子项目中,仅需列出需要使用的依赖和插件的groupIdartifactId就可以了,其他信息会自动从父项目管理的信息里面获取。

看例子,父项目中:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies>
</dependencyManagement>

在子项目中:

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>

四、命令行创建

上面就是在Eclipse里面创建多模块的步骤,和一些优化配置。

其中,具体的步骤可以根据实际情况进行适当的修改,比如选择Archetype时,可以根据需要,选择适当的Archetype

上述步骤中的一些环节,也可以先通过命令行来生成雏形,然后再修改pom.xml来实现。

相关命令为:

maven构建maven-project和maven-module的更多相关文章

  1. eclipse Maven构建的project无法公布lib到tomcat的解决方法

    问题: eclipse导入基于Maven的web项目时,公布到tomcat中.发现lib文件夹及jar包没有公布过去. 解决方式: eclipse中,选择项目属性Properties --> D ...

  2. Maven学习- 使用Maven构建Web项目

    从网上查了一些资料,才算明白(也就是怎么操作吧),怎么使用Maven构建一个Web项目,找到一篇文档,主要都是从这里学到的: 下载地址:使用Eclipse构建Maven的Web项目.docx 现自己在 ...

  3. (转)Maven学习总结(三)——使用Maven构建项目

    孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(三)——使用Maven构建项目 maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的 ...

  4. 使用Maven构建JavaEE项目

    学习要点 Maven简介 Maven构建项目 MyEclipse中Maven的使用 Maven简介 Maven作用 对第三方依赖库进行统一的版本管理 统一的目录结构,统一各平台各IDE目录 统一的软件 ...

  5. Maven学习总结(3)——使用Maven构建项目

    Maven学习总结(三)--使用Maven构建项目 maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程. 一.构建Jave项目 1.1.创建J ...

  6. [Gradle系列]Gradle发布module库到jCenter, 并构建自己的企业Maven私服

    Tamic 作者: http://blog.csdn.net/sk719887916/article/details/53224544 前言 andorid开发者经常会看到xx公司发布了xx项目,xx ...

  7. Maven构建项目后项目报Error错误Java compiler level does not match the version of the installed Java project fac

    项目->右键->Project Facets->修改facets中Java版本(下拉箭头出)为要用的版本 Maven构建项目需注意 1.项目右键->Preferences-&g ...

  8. 二:maven构建module

    通常情况下,我们一个项目是需要分多个模块的,这是我们用maven管理项目就需要构建一个多模块的项目: 通常的结构是一个模块中有一个主项目,下面包含多个子项目,如果是web项目则子项目中有一个是java ...

  9. Maven构建简单的多模块项目

    复制于http://www.cnblogs.com/luxh/p/3506750.html 做个记录 一般web项目会进行分模块开发.这里简单分为domain(领域层).persist(持久层).se ...

  10. 使用Maven构建多模块项目

    [转] 使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层).dao(数据库访问层).service(业务 ...

随机推荐

  1. ubuntu修改环境变量

    1.修改/etc/profile后重启之后就失效了,需要修改/etc/environment才可以 以下情况是失败的: 在/etc/profile文件中添加变量[对所有用户生效(永久的)] 用VI在文 ...

  2. Delphi中点击DBGrid某一行获得其详细数据方法

    http://www.cnblogs.com/leewiki/archive/2011/12/16/2290172.html Delphi中点击DBGrid某一行获得其详细数据方法 前提是用ADOTa ...

  3. docker的资源限制cpuset cpuquota memory

    总结 目前,公司7u已经不再使用lxc,转而使用libcontainer 即native docker对cpuquota的支持目前是有问题的,一般大家使用docker的时候,主要是对memory,cp ...

  4. NOIP 提高组必会!(转)

    1.排序算法(快排.选择.冒泡.堆排序.二叉排序树.桶排序)2.DFS/BFS 也就是搜索算法,剪枝务必要学! 学宽搜的时候学一下哈希表!3.树 ①遍历 ②二叉树 ③二叉排序树(查找.生成.删除) ④ ...

  5. SVG六基本元素

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Java NIO------基础理论之缓存区

    1.概述:NIO我的理解就是 New IO,是API1.4里提供的新的API,为所有的原始类型做缓存支持. NIO主要的核心组成部分: Buffer(缓存) Channels(通道) Selector ...

  7. Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)

    前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...

  8. 利用moment为基础,基于DOM实现一个多个倒计时同时进行的js库方便使用

    moment非常强大,提供了很多时间方法的封装,项目需要一个小倒计时的功能,网上找了很多不合适,决定自己写一个,直接上代码 //定义一个立即执行的函数(function () { var Ticts= ...

  9. .net 开发经理的月薪

    因为各人的成长不一样,有人工作了5年,技术也只能当个高级程序员,有人工作了两年,就能带领一个团队,有人在初中时期就写了一个很牛X 的框架,而我工作也快5年,也努力奋斗了5年,我觉得自己有能力做开发经理 ...

  10. JQuery之 serialize() 及serializeArray() 实例介绍

    这两个方法都是jq封装的,主要用于form表单. serialize(); 1.创建一个标准url编码显示的文本字符转: 2.操作的对象是表单元素结合的jq对象: serializeArray(); ...