maven学习(六)依赖、聚合、继承
先说一下概念(个人理解的,有问题请留言):
依赖:我要盖一座房子,就需要很多的砖,这些专就是盖房子的一个依赖。我要跑一个maven项目,需要各种各样的功能,功能实现的jar包和插件就是我的依赖。
聚合:物以类聚嘛,你想要去xx旅游,我也想去xx旅游,咱们有相同的需求完全可以一块抱团啊。聚合就是将具有相同需求的模块聚合到一块,主要是为了模块服务的,比如我一个商品服务有单独的api的jar包,有单独的service的实现包,但是都属于商品模块的,执行编译等操作的时候就不用费劲执行两遍命令了,此时就可以聚合到一块。目的是方便构建项目~
继承:这个好理解,老子传给儿子的就是继承。不断的提取共有部分进行管理,主要解决的是重复配置的问题,通常用于声明一些公共依赖模块、属性等。
依赖:
依赖主要包含:依赖范围、传递性依赖、依赖优先级、依赖类型、可选依赖、排除依赖等,下面用带有注释的xml配置来描述。(注:此例非人类配置仅为说明各个属性的作用,未满18周岁同学请在父母陪同下观看)
<!-- 属性定义,类似于常量 -->
<properties>
<property.key>property.value</property.key>
<!-- 归类依赖,这里例子举的不是很恰当。试想用定义了spring的某个版本,下面依赖的<version>全用变量就可以统一管理 -->
<junit.version>3.8.</junit.version>
</properties>
<!-- 依赖管理,可以依赖内部模块、也可以依赖三方jar包 -->
<!-- 依赖命令:
依赖树:dependency:tree
依赖列表:dependency:list
依赖分析:dependency:analyze
-->
<dependencies>
<!-- 依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<!-- 组件的附属构件,不能在定义pom的时候直接指定,此值由插件生成,比如java-doc等,依赖的时候要指明
<classifier></classifier> -->
<!--
依赖范围:
compile(默认):编译、测试、运行都有效,spring-core
test:测试,junit
provided:编译、测试,servlet-api
runtime:测试、运行,jdbc驱动
system:系统
import:与dependencyManagement同时使用
传递性依赖:
A - B - sb.jar
此时A传递引用sb.jar
依赖优先级:
.第一原则,路径最近依赖原则
A - B - sb.jar
A - sb.jar (√)
.第二原则,最先声明依赖原则
A - B - sb.jar (√)
A - C - sb.jar
-->
<scope>test</scope>
<!-- 类型,一般不用显示声明,默认为jar -->
<type>jar</type>
<!-- 可选依赖,不会被传递 -->
<optional>true</optional>
<!-- 排除依赖,比如排除掉某个不想要的包
<exclusions>
<exclusion>
<groupId>com.wang</groupId>
<artifactId>test123</artifactId>
</exclusion>
</exclusions>-->
<!-- 引入比较特殊的jar包的时候才会使用到,通常是相同版本在不同环境下使用的jar,比如jar的名字json-lib-2.4-jdk15.jar -->
<!-- <classifier>jdk15</classifier> -->
<!-- 仅供系统范围使用,不鼓励使用这个元素,设置为系统的绝对路径,可以使用系统变量如${Java.home},要求<scope>元素的值为system
<systemPath>D:\test123.jar</systemPath>-->
</dependency>
</dependencies>
聚合:
表现为pom.xml中的<modules>元素,注意module的配置是相对于父pom的,如:
<!-- 目录结构
parent
父pom.xml
account-email
pom.xml
account-persist
pom.xml -->
<!-- 配置 -->
<modules>
<module>../account-email</module>
<module>../account-persist</module>
</modules>
<!-- 目录结构
父pom.xml
account-email
pom.xml
account-persist
pom.xml --> <!-- 配置 -->
<modules>
<module>account-email</module>
<module>account-persist</module>
</modules>
继承:
表现为pom.xml的<parent>元素,子pom可以继承父pom中的配置,如依赖、属性等。
父模块只能打包为pom。
可以继承的元素:groupId、version、description、organization、inceptionYear、url、developers、contributors、distributinManagement、issueManagement、ciManagement、scm、mailingLists、properties、dependencies、dependencyManagement、repositories、build、reporting
感觉上面大多数都是一些扯蛋的元素,比较常用的有以下几个:
properties:属性,类似于java的静态常量
dependencies:依赖
distributionManagement:部署配置,比如自定义组件的上传,会结合settings.xml里的server进行账号认证。
依赖管理(不会实际引入依赖):
<dependencyManagement>元素,子模块引入时可以省略版本号的配置
依赖管理scope元素可以设置为import,这个import必须结合dependencyManagement来使用。使用import通常指向一个pom文件,作用是将目标pom中的dependencyManagement配置导入合并到当前pom的dependencyManagement元素中使用。
插件管理(不会实际引入依赖):
<pluginManagement>,只需引入插件的坐标即可,省去插件的具体配置,便于管理和维护~
maven学习(六)依赖、聚合、继承的更多相关文章
- (转)Maven学习总结(五)——聚合与继承
孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(五)——聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <mod ...
- Maven学习(八)继承和聚合
*聚合(多模块) 在一个项目中 往往有多个模块组成,例如有项目demo下面有a, b两个模块 为了能使用一条命令就能构建demo-a, demo-b两个模块, 需要创建一个额外的聚合模块, 然后通过该 ...
- Maven学习总结(五)——聚合与继承
一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 <modules> <module>模块一</module> & ...
- 转】Maven学习总结(五)——聚合与继承
原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4058008.html 感谢! 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1. ...
- Maven学习小结(四 聚合与继承)
1.聚合 一次构建多个项目模块. 2.继承 为了消除重复,把很多相同的配置提取出来,例如groupid和version: 2.1 Maven中可以继承的POM元素 groupId :项目组 ID ,项 ...
- maven学习笔记四(聚合和继承)
聚合 现在假如,我创建了3个maven项目, user-core.2.user-log,3.user-service 这个时候,假如我们要打包这些项目,要一个一个来,会很麻烦.那么我们有没有更好的办法 ...
- Maven学习5-聚合与继承
一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <modules> 2 <module>模块一</module&g ...
- Maven学习 六 pom.xml文件
java jar包的搜索网址:http://mvnrepository.com/ pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需 ...
- Maven学习(六)-----Maven仓库的详细介绍
Maven仓库的详细介绍 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件.Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库.(仓库就是存放依 ...
- Maven学习 (六) 搭建多模块企业级项目
首先,前面几次学习已经学会了安装maven,如何创建maven项目等,最近的学习,终于有点进展了,搭建一下企业级多模块项目. 好了,废话不多说,具体如下: 首先新建一个maven项目,pom.xml的 ...
随机推荐
- float 浮动 文档流和文字流区别
关于float属性的脱离文档流的问题 使用float浮动后,元素虽然会脱离文档流,但还处在文本流的位置当中,所以就不会出现重叠的效果吗? 下面我自己试了一下,给两个DIV分别设置了样式,而只给第一个D ...
- selenium+Python(处理html5的视频播放)
Webdriver支持在指定的浏览器测试HTML5,另外可以用JavaScript来测试这些功能,这样就可以在任何浏览器上测试HTML5 多数浏览器使用控件来播放视频,但是不同浏览器需要使用不同的插件 ...
- xamarin for android webservice
首先新建一个空网站,添加一个webservice服务.然后在UserWebService.cs类里编写对外服务的方法 [WebMethod] public string IsCorret(string ...
- XPath语法简介
XPath是一种在xml中查找信息的语言,具体可参考W3school XPath教程 XPath是以路径表达式来选择XML文档中的节点或节点集 === XPath节点(Node) 在 XPath 中, ...
- Linux 命令 -- chown
chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组.用户可以是用户或者是用户D,用户组可以是组名或组id.文件名可以使由空格 ...
- Azure SQL Federation(联合)
说Federation(联合)之前,先说下,表的垂直分割 和 水平分割----------------------------------------------------------------- ...
- 【HTML基础】表格和表单
本次博客的主要内容如下: meta和link 表格 表单 meta和link meta meta的属性有两种:name和http-equiv. name属性主要用于描述网页内容,对应与网页内容. 1. ...
- File.Exists(Application.StartupPath + \\Settings\\Settings.xml)
File.Exists(Application.StartupPath + "\\Settings\\Settings.xml")
- jsp继承rapid库
如果jsp不使用继承方式开发,而是用标准的指令或动作元素去include,实在是太多重复代码. rapid-framework是谷歌的一个项目,可以实现jsp网页的继承,也就是书写模板页. 但是在ma ...
- access 2010,语文
access 2010*(报表) 使用报表创建:打开需要创建图形的报表----创建----报表----完成. 使用报表向导创建:创建----报表向导----选择表/查询----选择字段----设置分布 ...