2019独角兽企业重金招聘Python工程师标准>>>

Maven

POM(项目对象模型): 通过XML配置项目的依赖,自动完成项目构建

pom.xml 标签


  • modelVersion: pom.xml 版本
  • groupId:项目组,一般用公司名:com.baidu.....
  • artifactId: 项目模块
  • version: 项目版本号
  • packaging: 打包方式(默认jar包)
  • scope:包作用域(默认compile:test/provided/runtime)
  • properties:POM属性
  • dependencies:项目依赖包

maven坐标


groupId、artifactId、version 3个标签构成软件包坐标,类似数据库主键唯一标识1条记录

Maven 聚合


多个Maven项目通过modules标签整合在1个模块中,实现模块组生命周期的统一管理

Maven 继承


子模块继承父模块的属性、依赖等元素,实现POM元素的复用,方便统一管理

测试案例


子类工程:maven_child

<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><artifactId>maven_child</artifactId><packaging>jar</packaging><name>maven_child</name><parent><groupId>com.zhiwei</groupId><artifactId>maven_parent</artifactId><version>0.0.1-SNAPSHOT</version><relativePath>../maven_parent/pom.xml</relativePath></parent><!--配置maven工程属性--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- 父模块引用:可省略版本号,由父模块统一管理 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies>
</project>

子类工程:maven_brother

<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>com.zhiwei</groupId><artifactId>maven_parent</artifactId><version>0.0.1-SNAPSHOT</version><relativePath>../maven_parent/pom.xml</relativePath></parent><artifactId>maven_brother</artifactId><packaging>jar</packaging><name>maven_brother</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><!-- 引入依赖模块: maven_child --><dependency><groupId>com.zhiwei</groupId><artifactId>maven_child</artifactId><!-- 依赖模块放入父模块里面,可省略版本号 --><!-- <version>0.0.1-SNAPSHOT</version>--></dependency></dependencies>
</project>

父工程:maven_parent

<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><!--
父模块:定义整个maven项目的依赖、版本等信息
继承: 子模块可以直接引用父模块依赖包的定义,避免重复定义dependencesManagement:定义子模块可能使用的依赖包,不强制子类一定会继承
dependences: 定义子模块需要使用的依赖包,子类强制继承注意:父类的groupId、artifactId、version只可部分继承,但不能全部继承(唯一性)--><groupId>com.zhiwei</groupId><artifactId>maven_parent</artifactId><version>0.0.1-SNAPSHOT</version><!-- 注意父模块和聚合模块只能以pom形式打包部署 --><packaging>pom</packaging><name>maven_parent</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 聚合:父类模块构建时,继承该父类模块的子模块统一构建,实现自动化构建和部署 --><modules><module>../maven_child</module>  <!-- 子模块的pom.xml相对路径 --><module>../maven_brother</module></modules><!-- 管理子模块可能重复使用的包:子模块可根据需要自选择父模块定义的依赖包      --><dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><scope>test</scope></dependency><!--父模块可将子模块设定为依赖,例如提供整个maven项目最基础的功能--><dependency><groupId>com.zhiwei</groupId><artifactId>maven_child</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></dependencyManagement>
</project>

特别注意

maven_brother 依赖于maven_child项目,maven_child若未成功构建,maven_brother也无法构建

转载于:https://my.oschina.net/yangzhiwei256/blog/3007837

Maven 模块继承、聚合相关推荐

  1. Maven pom 继承聚合

    Maven pom 继承聚合 1.1.0 简介 对于一个pom.xml来说有几个元素是必须定义的,一个是project根元素,然后就是它里面的modelVersion.groupId.artifact ...

  2. Eclipse下Maven工程多模块继承和聚合的创建

    使用Maven对项目进行管理的时候,多模块的继承和聚合是必不可少的,本文简要说明一下在eclipse IDE下创建多模块工程. 1.Maven多模块的聚合 一个Maven工程下创建多个模块,然后用一个 ...

  3. Maven学习文档常用命令继承聚合

    学习视频 www.atguigu.com 目前的技术在开发中存在的问题 一个项目就是一个工程 如果项目非常庞大,就不适合继续使用package来划分模块.最好是每一个模块对应一 个工程,利于分工协作. ...

  4. Maven高级——继承与聚合——继承关系实现

    将Maven拆分成多个项目之后又会引发新的问题,继承与聚合就是用来解决这些问题. 这里的继承就像java中类和类之间的继承一样,工程之间也是可以实现继承的. 继承解决的问题 在之前拆分的三个模块中每个 ...

  5. Maven 模块管理

    随着项目的不断发展,需求的不断细化与添加,代码越来越多,结构也越来越复杂,这时候就会遇到各种问题 不同方面的代码之间相互耦合,这时候一系统出现问题很难定位到问题的出现原因,即使定位到问题也很难修正问题 ...

  6. IDEA新建一个多maven模块工程(有图)

    对于一些大型的项目来说,将项目的各个模块理清并进行管理,便于后续项目的维护,使用maven管理是很方便的,它可以很好的构建模块来设计项目的整体结构,对一些小型的项目不建议使用 1.新建父maven模块 ...

  7. Maven 当中的聚合

    Maven 当中的聚合 文章目录 Maven 当中的聚合 1. 聚合本身的含义 2. Maven 中的聚合 3. 好处 4. 聚合的配置 5. 依赖循环问题 6. 最后:感谢 1. 聚合本身的含义 部 ...

  8. java idea 模块_使用IntelliJ IDEA搭建多maven模块JAVA项目

    一.新建项目和模块 步骤: 1. 新建一个项目,因为maven管理jar包非常方便,故此处建立一个maven项目:New Project->Maven->(Create from arch ...

  9. 使用IntelliJ IDEA搭建多maven模块JAVA项目

    一.新建项目和模块 步骤: 1. 新建一个项目,因为maven管理jar包非常方便,故此处建立一个maven项目:New Project->Maven->(Create from arch ...

最新文章

  1. 房间计费系统改造——数据库设计
  2. 一种简单的数据库性能测试方法
  3. 水晶报表10 注册码
  4. java策略模式 if else_Java如何利用策略模式替代if/else语句
  5. python threading_【python标准库学习】thread,threading(一)多线程的介绍和使用
  6. C# 扩展集合ObservableCollection使集合在添加、删除、值变更后触发事件
  7. 三维图形几何变换算法实验_计算机视觉方向简介 | 深度学习视觉三维重建
  8. Android 网格视图GridView
  9. 网络自己发 sip invite_IP话机网页配置SIP账号
  10. python 输入密码不显示_Python开发实例:隐藏输入密码时屏幕回显
  11. 解决从k8s.gcr.io/gcr.io/quay.io等地址拉取镜像失败问题(Kubernetes国内镜像仓库地址)
  12. python neo4j_在Python中使用Neo4j的方法
  13. Java的基本数据类型与转换
  14. 动手写个数字输入框2:起手式——拦截非法字符
  15. 2022年的文章写作计划
  16. Luogu P2833 等式 我是傻子x2
  17. ott盒子 MySQL_LAMP源码环境搭建与phpmyadmin的使用
  18. 【宣讲会感言】腾讯实习生
  19. 如何制作ISO镜像文件
  20. 邮箱附件钓鱼常用技法

热门文章

  1. 使用Spring框架的好处
  2. $0,$?,$!,$-,$*,$@,$#等的特殊用法
  3. Solaris 常用命令
  4. 单链表的建立、排序和翻转
  5. CentOS 7 Galera Cluster安装全攻略
  6. DDoS***如此猖獗,我们该如何解决?
  7. Linux查看实时带宽流量情况
  8. 配置bind主域名服务器
  9. C# 利用SharpPcap实现网络包捕获嗅探
  10. WebSockets[翻译]