对于 Maven3,超级 POM 在文件 %MAVEN_HOME%/lib/maven-model-builder-x.x.x.jar 中的 org/apache/maven/model/pom-4.0.0.xml 路径下、

对于 Maven2,超级 POM 在文件 %MAVEN_HOME%/lib/maven-x.x.x-uber.jar 中的 org/apache/maven/project/pom-4.0.0.xml 目录下。

这里的 x.x.x 表示 Maven 的具体版本。

对于使用java的人而言,继承这个词大家应该都不陌生。要继承pom就需要有一个父pom,在Maven中定义了超级pom.xml,任何没有申明自己父pom.xml的pom.xml都将默认继承自这个超级pom.xml。

先来看一下这个超级pom.xml的定义:

Xml代码  
  1. <project>
  2. <modelVersion>4.0.0</modelVersion>
  3. <name>Maven Default Project</name>
  4. <repositories>
  5. <repository>
  6. <id>central</id>
  7. <name>Maven Repository Switchboard</name>
  8. <layout>default</layout>
  9. <url>http://repo1.maven.org/maven2</url>
  10. <snapshots>
  11. <enabled>false</enabled>
  12. </snapshots>
  13. </repository>
  14. </repositories>
  15. <pluginRepositories>
  16. <pluginRepository>
  17. <id>central</id>
  18. <name>Maven Plugin Repository</name>
  19. <url>http://repo1.maven.org/maven2</url>
  20. <layout>default</layout>
  21. <snapshots>
  22. <enabled>false</enabled>
  23. </snapshots>
  24. <releases>
  25. <updatePolicy>never</updatePolicy>
  26. </releases>
  27. </pluginRepository>
  28. </pluginRepositories>
  29. <build>
  30. <directory>${project.basedir}/target</directory>
  31. <outputDirectory>${project.build.directory}/classes</outputDirectory>
  32. <finalName>${project.artifactId}-${project.version}</finalName>
  33. <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
  34. <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
  35. <!-- TODO: MNG-3731 maven-plugin-tools-api < 2.4.4 expect this to be relative... -->
  36. <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
  37. <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
  38. <resources>
  39. <resource>
  40. <directory>${project.basedir}/src/main/resources</directory>
  41. </resource>
  42. </resources>
  43. <testResources>
  44. <testResource>
  45. <directory>${project.basedir}/src/test/resources</directory>
  46. </testResource>
  47. </testResources>
  48. <pluginManagement>
  49. <plugins>
  50. <plugin>
  51. <artifactId>maven-antrun-plugin</artifactId>
  52. <version>1.3</version>
  53. </plugin>
  54. <plugin>
  55. <artifactId>maven-assembly-plugin</artifactId>
  56. <version>2.2-beta-2</version>
  57. </plugin>
  58. <plugin>
  59. <artifactId>maven-clean-plugin</artifactId>
  60. <version>2.2</version>
  61. </plugin>
  62. <plugin>
  63. <artifactId>maven-compiler-plugin</artifactId>
  64. <version>2.0.2</version>
  65. </plugin>
  66. <plugin>
  67. <artifactId>maven-dependency-plugin</artifactId>
  68. <version>2.0</version>
  69. </plugin>
  70. <plugin>
  71. <artifactId>maven-deploy-plugin</artifactId>
  72. <version>2.4</version>
  73. </plugin>
  74. <plugin>
  75. <artifactId>maven-ear-plugin</artifactId>
  76. <version>2.3.1</version>
  77. </plugin>
  78. <plugin>
  79. <artifactId>maven-ejb-plugin</artifactId>
  80. <version>2.1</version>
  81. </plugin>
  82. <plugin>
  83. <artifactId>maven-install-plugin</artifactId>
  84. <version>2.2</version>
  85. </plugin>
  86. <plugin>
  87. <artifactId>maven-jar-plugin</artifactId>
  88. <version>2.2</version>
  89. </plugin>
  90. <plugin>
  91. <artifactId>maven-javadoc-plugin</artifactId>
  92. <version>2.5</version>
  93. </plugin>
  94. <plugin>
  95. <artifactId>maven-plugin-plugin</artifactId>
  96. <version>2.4.3</version>
  97. </plugin>
  98. <plugin>
  99. <artifactId>maven-rar-plugin</artifactId>
  100. <version>2.2</version>
  101. </plugin>
  102. <plugin>
  103. <artifactId>maven-release-plugin</artifactId>
  104. <version>2.0-beta-8</version>
  105. </plugin>
  106. <plugin>
  107. <artifactId>maven-resources-plugin</artifactId>
  108. <version>2.3</version>
  109. </plugin>
  110. <plugin>
  111. <artifactId>maven-site-plugin</artifactId>
  112. <version>2.0-beta-7</version>
  113. </plugin>
  114. <plugin>
  115. <artifactId>maven-source-plugin</artifactId>
  116. <version>2.0.4</version>
  117. </plugin>
  118. <plugin>
  119. <artifactId>maven-surefire-plugin</artifactId>
  120. <version>2.4.3</version>
  121. </plugin>
  122. <plugin>
  123. <artifactId>maven-war-plugin</artifactId>
  124. <version>2.1-alpha-2</version>
  125. </plugin>
  126. </plugins>
  127. </pluginManagement>
  128. </build>
  129. <reporting>
  130. <outputDirectory>${project.build.directory}/site</outputDirectory>
  131. </reporting>
  132. <profiles>
  133. <profile>
  134. <id>release-profile</id>
  135. <activation>
  136. <property>
  137. <name>performRelease</name>
  138. <value>true</value>
  139. </property>
  140. </activation>
  141. <build>
  142. <plugins>
  143. <plugin>
  144. <inherited>true</inherited>
  145. <groupId>org.apache.maven.plugins</groupId>
  146. <artifactId>maven-source-plugin</artifactId>
  147. <executions>
  148. <execution>
  149. <id>attach-sources</id>
  150. <goals>
  151. <goal>jar</goal>
  152. </goals>
  153. </execution>
  154. </executions>
  155. </plugin>
  156. <plugin>
  157. <inherited>true</inherited>
  158. <groupId>org.apache.maven.plugins</groupId>
  159. <artifactId>maven-javadoc-plugin</artifactId>
  160. <executions>
  161. <execution>
  162. <id>attach-javadocs</id>
  163. <goals>
  164. <goal>jar</goal>
  165. </goals>
  166. </execution>
  167. </executions>
  168. </plugin>
  169. <plugin>
  170. <inherited>true</inherited>
  171. <groupId>org.apache.maven.plugins</groupId>
  172. <artifactId>maven-deploy-plugin</artifactId>
  173. <configuration>
  174. <updateReleaseInfo>true</updateReleaseInfo>
  175. </configuration>
  176. </plugin>
  177. </plugins>
  178. </build>
  179. </profile>
  180. </profiles>
  181. </project>

对于一个pom.xml来说有几个元素是必须定义的,一个是project根元素,然后就是它里面的modelVersion、groupId、artifactId和version。由上面的超级pom.xml的内容我们可以看到pom.xml中没有groupId、artifactId和version的定义,所以我们在建立自己的pom.xml的时候就需要定义这三个元素。和java里面的继承类似,子pom.xml会完全继承父pom.xml中所有的元素,而且对于相同的元素,一般子pom.xml中的会覆盖父pom.xml中的元素,但是有几个特殊的元素它们会进行合并而不是覆盖。这些特殊的元素是:

Ø  dependencies

Ø  developers

Ø  contributors

Ø  plugin列表,包括plugin下面的reports

Ø  resources

参考:

1、http://blog.csdn.net/tounaobun/article/details/8958125

2、http://blog.csdn.net/haojiahj/article/details/49964919

maven的超级pom的更多相关文章

  1. 学习笔记——Maven超级POM

    2014-07-04:更新如何在安装程序中找到超级pom文件.Maven有一个超级POM,所有的POM均继承此文件.你可以使用解压工具打开jar文件$M2_HOME/lib/maven-model-b ...

  2. maven 超级pom位置、maven命令、构件、下载位置、手动打包位置、中央仓库ip

    1.超级pom位置 ----> 解压M2_HOME/lib/maven-model-builder-3.5.4.jar 2.运行maven 命令实际上是运行了 java 命令,因为maven插件 ...

  3. maven 仓库配置 pom中repositories属性

    文章转自http://blog.csdn.net/zlgydx/article/details/51130627 什么是Maven仓库在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录 ...

  4. maven常用插件pom配置

    一.问题描述: 部署一个maven打包项目时,jar包,依赖lib包全部手动上传至服务器,然后用maven部署报错:Exception in thread "main" java. ...

  5. eclipse加载maven工程提示pom.xml无法解析org.apache.maven.plugins:maven-resources-plugin:2.4.3解决方案

    pom文件提示信息: Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.4.3 from http:/ ...

  6. (转)maven配置之pom.xml配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  7. Maven系列一pom.xml 配置详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. 【转】maven核心,pom.xml详解

    感谢如下博主: http://www.cnblogs.com/qq78292959/p/3711501.html maven核心,pom.xml详解 什么是pom?    pom作为项目对象模型.通过 ...

  9. maven编译设置pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

随机推荐

  1. windows下安装python

    1. 进入python官网   https://www.python.org/downloads/windows/ 2.根据我们的电脑位数选择版本,尽量选择  Download Windows x86 ...

  2. Python3基础教程(十六)—— 迭代器、生成器、装饰器

    在这个实验里我们学习迭代器.生成器.装饰器有关知识. 这几个概念是 Python 中不容易理解透彻的概念,务必把所有的实验代码都完整的输入并理解清楚其中每一行的意思. 迭代器 Python 迭代器(I ...

  3. 富通天下(T 面试)

    1.Mybatis的分页查询是怎么实现的? 交流: A:我们是通过PageHelper插件实现的 B:你说下原生SQL应该怎么写? A:某段查询SQL,实现分页需要使用limit关键字,改变下标和页码 ...

  4. 牛客OI赛制测试赛2 D 星光晚餐

    链接:https://www.nowcoder.com/acm/contest/185/D来源:牛客网 题目描述 Johnson和Nancy要在星光下吃晚餐.这是一件很浪漫的事情. 为了增加星光晚餐那 ...

  5. Dijkstra算法简单实现(C++)

    图的最短路径问题主要包括三种算法: (1)Dijkstra (没有负权边的单源最短路径) (2)Floyed (多源最短路径) (3)Bellman (含有负权边的单源最短路径) 本文主要讲使用C++ ...

  6. python基础知识04-散列类型运算优先级和逻辑运算

    散列类型 1.集合 定义集合 se = {1,2,3,4} se = set()定义空集合 se = {1,3,5,7} se2 = {1,3,8,9} se & se2 {1,3} 交集 s ...

  7. 算法导论 第六章 2 优先队列(python)

    优先队列:     物理结构: 顺序表(典型的是数组){python用到list}     逻辑结构:似完全二叉树 使用的特点是:动态的排序..排序的元素会增加,减少#和快速排序对比 快速一次排完 增 ...

  8. 国内UED收录

    腾讯 腾讯CDC http://cdc.tencent.com/ CDC(Customer Research & User Experience Design Center)腾讯用户研究与体验 ...

  9. XV6上下文切换

    上下文切换分为两种情况 用户程序陷入到内核,再从内核返回 两个应用程序之间的上下文切换 用户程序陷入到内核 用户程序陷入到内核通过中断INT指令,在xv6中系统调用的号为64 操作系统在初始化的时候会 ...

  10. 按Esc按钮关闭layer弹窗

    //按Esc关闭弹出框 $(document).ready(function () { }).keydown( function (e) { if (e.which === 27) {  layer. ...