Project Aggregation [,æɡrɪ'ɡeɪʃən]

https://maven.apache.org/guides/introduction/introduction-to-the-pom.html

https://maven.apache.org/guides/mini/guide-multiple-modules.html

模块式开发(将所有模块聚合在一个父pom)

使用一个父pom,管理各个模块,控制模块间依赖关系和构建顺序

开始一个简单的demo来理解这个结构

1.创建一个父pom(Maven Project)

<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.zno</groupId><artifactId>app-pom</artifactId><version>1.0</version><packaging>pom</packaging>
</project>

2.创建一个jar模块(Maven Module)

右键 app-pom

new Maven Module

<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><parent><groupId>cn.zno</groupId><artifactId>app-pom</artifactId><version>1.0</version></parent><artifactId>app-jar</artifactId>
</project>

3.创建一个war模块

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>cn.zno</groupId><artifactId>app-pom</artifactId><version>1.0</version></parent><artifactId>app-war</artifactId><packaging>war</packaging><name>app-war Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><build><finalName>app-war</finalName></build>
</project>

现在父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"><modelVersion>4.0.0</modelVersion><groupId>cn.zno</groupId><artifactId>app-pom</artifactId><version>1.0</version><packaging>pom</packaging><modules><module>app-jar</module><module>app-war</module></modules>
</project>

现在install app-pom

右键app-pom ,Run As ,Maven install

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] app-pom
[INFO] app-jar
[INFO] app-war Maven Webapp
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building app-pom 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ app-pom ---
[INFO] Installing F:\e\workspacetest\app-pom\pom.xml to C:\Users\wl\.m2\repository\cn\zno\app-pom\1.0\app-pom-1.0.pom
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building app-jar 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ app-jar ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ app-jar ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ app-jar ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ app-jar ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ app-jar ---
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ app-jar ---
[INFO] Building jar: F:\e\workspacetest\app-pom\app-jar\target\app-jar-1.0.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ app-jar ---
[INFO] Installing F:\e\workspacetest\app-pom\app-jar\target\app-jar-1.0.jar to C:\Users\wl\.m2\repository\cn\zno\app-jar\1.0\app-jar-1.0.jar
[INFO] Installing F:\e\workspacetest\app-pom\app-jar\pom.xml to C:\Users\wl\.m2\repository\cn\zno\app-jar\1.0\app-jar-1.0.pom
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building app-war Maven Webapp 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ app-war ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ app-war ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ app-war ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory F:\e\workspacetest\app-pom\app-war\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ app-war ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ app-war ---
[INFO]
[INFO] --- maven-war-plugin:2.2:war (default-war) @ app-war ---
[INFO] Packaging webapp
[INFO] Assembling webapp [app-war] in [F:\e\workspacetest\app-pom\app-war\target\app-war]
[INFO] Processing war project
[INFO] Copying webapp resources [F:\e\workspacetest\app-pom\app-war\src\main\webapp]
[INFO] Webapp assembled in [36 msecs]
[INFO] Building war: F:\e\workspacetest\app-pom\app-war\target\app-war.war
[INFO] WEB-INF\web.xml already added, skipping
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ app-war ---
[INFO] Installing F:\e\workspacetest\app-pom\app-war\target\app-war.war to C:\Users\wl\.m2\repository\cn\zno\app-war\1.0\app-war-1.0.war
[INFO] Installing F:\e\workspacetest\app-pom\app-war\pom.xml to C:\Users\wl\.m2\repository\cn\zno\app-war\1.0\app-war-1.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] app-pom ............................................ SUCCESS [  0.674 s]
[INFO] app-jar ............................................ SUCCESS [  2.903 s]
[INFO] app-war Maven Webapp ............................... SUCCESS [  0.759 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.483 s
[INFO] Finished at: 2016-09-07T15:11:51+08:00
[INFO] Final Memory: 13M/111M
[INFO] ------------------------------------------------------------------------

做了这几件事:

install 了一个pom文件

install 了一个 jar 文件

install 了一个 war 文件

构建顺序引用官网的话:

The following relationships are honoured when sorting projects:

  • a project dependency on another module in the build
  • a plugin declaration where the plugin is another modules in the build
  • a plugin dependency on another module in the build
  • a build extension declaration on another module in the build
  • the order declared in the <modules> element (if no other rule applies)

因为app-war 和 app-jar 没有依赖关系,所以构建顺序是用的最后一个规则(modules 声明顺序)

为何模块化开发

  • 分工明确代码复用
  • SOA模块便于分布式
  • 保护源码权限控制
  • 局部构建节省时间

1.开发过程中可能遇到多个项目,里面的dao ,servie, util 重复使用,形成代码到处复制粘贴。等到想修改某处逻辑时傻眼了,因为要改N处。无谓的加大了开发成本和维护成本。

2.并发访问量提升之后考虑的SOA,如果最初设计时没有服务模块化,改动成本巨大。

3.版本控制软件svn 、git,如果代码全在一处,虽然只分配一个小任务只涉及到小部分代码,但全部的代码都要被下载下来。

4. 只修改了一个小功能没想到需要整体构建一下子,慢慢慢。

转载于:https://www.cnblogs.com/zno2/p/5850089.html

19) maven 项目结构:聚集相关推荐

  1. Maven笔记(2)-- 常用命令和标准的Maven项目结构

    http://www.cnblogs.com/luxh/archive/2012/11/06/2757441.html 1.常用命令 1)创建一个Project mvn archetype:gener ...

  2. java ee maven_针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom...

    java ee maven 为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务 ...

  3. 针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom

    为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务器上的部署并细化我的配置. ...

  4. Maven | 05.Maven项目结构及Maven命令

    文章目录 参考视频 1.Maven项目结构 2.使用命令构建Maven项目 2.1.Maven构建命令(在DOS窗口中) 2.2.构建Maven项目 参考视频 06-第一个Maven程序-Maven项 ...

  5. Maven 简介 及 标准的Maven项目结构

    Maven是基于项目对象模型(Pom),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 发文时,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具.遗憾的是, ...

  6. 【移花接木】Maven项目结构调整解决方案

    [解决方案]Maven项目结构调整 一.背景 二.思路 三.调整步骤 3.1 调整`system`子模块POM文件 3.2 调整`业务A`子模块POM文件 3.3 资源文件剪切到`业务A`子模块 3. ...

  7. 在maven项目结构下对于Resources目录下文件的存取

    在maven项目中,文件结构如下: proj---src----main ----java ----Main.java ----resources ----userFile.properties -- ...

  8. eclipse创建maven项目结构显示不全的解决办法

    在eclipse中创建maven项目 1.项目结构图(显示不全) 2.正常的maven项目结构图 解决办法 项目右键 ----> Properties(或Alt+Enter) ----> ...

  9. 面试必会系列 - 11.1 一文读懂Maven:Maven工程类型、项目结构、工程关系、常见命令等

    本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...

最新文章

  1. CodeForces 375D Tree and Queries
  2. HTML5的Canvas画图模拟太阳系运转
  3. Win7系统电脑修改不了文件属性怎么办
  4. Python猫荐书系列:文也深度学习,理也深度学习
  5. Async/Await FAQ
  6. dpkg: error: dpkg status database is locked by another process 解决方法
  7. 实现两个虚拟域内用户相互收发邮件
  8. Altera下载器使用说明 Intel(Altera)FPGA高速下载器线PL-USB2-BLASTER中文详细使用手册
  9. graphpad饼状图_Graphpad Prism 堆叠图
  10. 计算机创新创业选题参考,计算机及相关专创新创业教育指导书.doc
  11. TeamViewer设备数量受限的解决办法
  12. 谈谈写博客的意义和感受
  13. 一个资源丰富的在线小程序社区推荐
  14. 手把手教你iPhone 3G手机软件开发
  15. 计算机报税流程,河南地税电子税务局电脑版纳税申报操作流程(图文)
  16. 盛世昊通解析什么是汽车OTA技术,智能汽车新颠覆
  17. 交换机ARP代理详解
  18. c语言x的n次方怎么写_C语言入门教程(三)进制与操作符
  19. 移植 linux-5.8.5 到 iTOP-4412(一)build config
  20. 柯尼卡美能达Konica Minolta magicolor 2300DL 打印机驱动

热门文章

  1. 计算机专业基础融合,【计算机专业论文】计算机专业产教融合转型发展模式探析(共2546字)...
  2. java中new与newitance_你真的弄明白 new 了吗
  3. mysql相互密码_去掉mysql命令行密码不安全的提示
  4. android 商品筛选_商品关联分析
  5. C语言学习笔记---C库排序函数qsort()
  6. HDU-2553N皇后问题(dfs)
  7. 【虹膜识别】+【开源代码】虹膜识别--步骤讲解及算法复现,虹膜表征:基于虹膜反映点的健康监测
  8. dropout为什么有效
  9. Pytorch:Dataset总结
  10. dcmtk在PACS开发中的应用(基础篇) 作者:冷家锋 第三章 工作列表(Work List)(一)...