参考:http://ju.outofmemory.cn/entry/75620

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

一、准备

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

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

二、先创建父项目

  1. 在Eclipse里面New -> Maven Project
  2. 在弹出界面中选择“Create a simple project”
  3. 设置工程的参数,见下图

    • Group Id: com.example
    • Artifact Id: multi-modules-demo
    • Packaging: pom
    • Name: Multi Modules Demo
  4. 点击完成

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

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

三、创建子项目

  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来实现。

相关命令为:

mvn archetype:generate -DarchetypeCatalog=internal -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart

工程创建后需要修改pom.xml.修改方式,可以参考上面说到的内容。

在Eclipse中创建Maven多模块工程的例子相关推荐

  1. (转)在Eclipse中创建Maven多模块工程

    背景:以前只总结了怎么在命令行下创建maven的多模块项目,在eclipse下怎么创建不是很清楚.最近需要在git的资源库中上传多模块项目,方便后期的维护,所以将网上的资料进行整理. 原文链接:htt ...

  2. Maven学习记录之maven基本操作命令,maven本地工厂的创建,maven骨架的生成,以及在eclipse中创建maven工程:...

    摘要:今天又学习了一下maven,之前是下载并安装和配置好了maven的环境,今天主要学习的内容包括:maven本地工厂的创建,maven骨架的生成命令,maven在dos下创建maven工程,以及在 ...

  3. eclipse maven打包jar 部分jsp无法访问_Maven系列教材 (九)- 在Eclipse中创建maven风格的java web项目...

    Maven系列教材 (九)- 在Eclipse中创建maven风格的java web项目 步骤1:删除j2ee目录步骤2:新建Maven 项目步骤3:这个界面点下一步步骤4: 这个界面使用webapp ...

  4. 【MAVEN】如何在Eclipse中创建MAVEN项目

    目录结构: contents structure [+] 1,Maven简介 2,Maven安装 2.1,下载Maven 2.2,配置环境变量 2.3,测试 3,Maven仓库 3.1,Maven仓库 ...

  5. eclipse中创建maven项目

    下载好maven和配置好环境变量之后,就可以在Eclipse中创建和导入Maven工程了 1.在maven同级目录中创建一个仓库用来保存jar包 2.windows--Preferences--搜索m ...

  6. java创建出现module_Eclipse创建Maven多模块工程Module开发(图文教程)

    自己研究了下eclipse用maven多模块工程module开发,跟大家分享一下! 功能模块来分module,跟java的package类似,一般是按照的功能模块分module,比如:sso/cas/ ...

  7. eclipse 中创建maven工程问题(常见)

    1.创建maven 工程的时候 Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plug ...

  8. Maven的Pom文件 ( Eclipse中创建Maven工程, 使用注意点,DevOps相关)

    ■POM Eclipse 使用注意点 修改POM之后 step1:右键点击工程,Maven,プロジェクトの更新 (project 更新) step2:点击 [プロジェクト](project )⇒[すべ ...

  9. 8.Eclipse中创建Maven Web项目

     第一步: 创建maven web工程 注意下面一步: 第二步: 继承parent 修改pom.xml文件如下 <projectxmlns="http://maven.apache ...

最新文章

  1. mybatis中的mapper设计与原理
  2. python接口自动化测试书籍_skPython接口自动化测试 自动化测试教程书籍 用Python实现UI自动化测试 轻松入门Python语法 MySQL数据库 Python基础教程书籍...
  3. 无线传感器主要应用领域及发展趋势
  4. vue中的data用return返回
  5. html5 canvas裁剪图片,html5-canvas 使用画布裁剪图像
  6. 使用windows system backup 裸机恢复域控-windows2008
  7. 20191209每日一句
  8. python无法定位到table_selenium3 + python - table定位
  9. 分层架构中各层之间关系如何界定,期待大家来讨论
  10. oracle参数错误,解决oracle参数系统文件出错
  11. C++实现多级时间轮定时器
  12. Echarts 实现环状半圆形饼图
  13. golang使用selenium自动化操作谷歌浏览器
  14. 基于c++图形化界面的clock页面置换算法
  15. 国内就能读的中国人民大学与加拿大女王大学金融硕士,为职业发展的下一个阶段积蓄能量
  16. 微信撤回服务器有没有,无需任何软件, 告诉你如何查看微信撤回的图片!
  17. 分析classpath、path、JAVA_HOME的作用及JAVA环境变量配置(转发博客园)
  18. Python lambda表达式及用法
  19. 浅浅的记录一下seo搜索引擎优化
  20. 向企业微信发送文字、图片的接口【亲测有效】

热门文章

  1. android UI进阶之实现listview中checkbox的多选与记录
  2. Yii学习笔记:利用setFlash和runController打造个性化的提示信息页面
  3. 物联网概念升级,万物互联来袭
  4. Ruby错误:iconv will be deprecated in the future, use String#encode instead.
  5. Delphi 2009 泛型容器单元(Generics.Collections)[1]: TListT
  6. python绘制动点_Python asyncore / asynchat 基本传输实验 - Jacky Liu's Blog
  7. LTE voice centric和data centric
  8. 程序编译生成的Hex、Bin、axf和elf格式
  9. 第二十二章 SHELL脚本-CENTOS7.5知识
  10. 了解Javascript中的执行上下文和执行堆栈