史上最全的maven pom xml文件教程详解

本文深入解析Maven项目配置文件pom.xml的各部分功能,包括项目依赖、构建配置、资源路径设置等内容,帮助读者全面理解Maven项目管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

原创整理不易,转载请注明出处:史上最全的maven pom.xml文件教程详解

代码下载地址:http://www.zuidaima.com/share/1781583829978112.htm

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"   
  2.   
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.   
  5. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">   
  6.   
  7. <!-- 父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。 -->   
  8.   
  9. <parent>   
  10.   
  11. <!-- 被继承的父项目的构件标识符 -->   
  12.   
  13. <artifactId />   
  14.   
  15. <!-- 被继承的父项目的全球唯一标识符 -->   
  16.   
  17. <groupId />   
  18.   
  19. <!-- 被继承的父项目的版本 -->   
  20.   
  21. <version />   
  22.   
  23. <!-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。 -->   
  24.   
  25. <relativePath />   
  26.   
  27. </parent>   
  28.   
  29. <!-- 声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 -->   
  30.   
  31. <modelVersion> 4.0.0 </modelVersion>   
  32.   
  33. <!-- 项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app -->   
  34.   
  35. <groupId> asia.banseon </groupId>   
  36.   
  37. <!-- 构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个特定的group ID下,artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源码,二进制发布和WARs等。 -->   
  38.   
  39. <artifactId> banseon-maven2 </artifactId>   
  40.   
  41. <!-- 项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型 -->   
  42.   
  43. <packaging> jar </packaging>   
  44.   
  45. <!-- 项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 -->   
  46.   
  47. <version> 1.0-SNAPSHOT </version>   
  48.   
  49. <!-- 项目的名称, Maven产生的文档用 -->   
  50.   
  51. <name> banseon-maven </name>   
  52.   
  53. <!-- 项目主页的URL, Maven产生的文档用 -->   
  54.   
  55. <url> http://www.baidu.com/banseon </url>   
  56.   
  57. <!-- 项目的详细描述, Maven 产生的文档用。 当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标签), 不鼓励使用纯文本描述。如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。 -->   
  58.   
  59. <description> A maven project to study maven. </description>   
  60.   
  61. <!-- 描述了这个项目构建环境中的前提条件。 -->   
  62.   
  63. <prerequisites>   
  64.   
  65. <!-- 构建该项目或使用该插件所需要的Maven的最低版本 -->   
  66.   
  67. <maven />   
  68.   
  69. </prerequisites>   
  70.   
  71. <!-- 项目的问题管理系统(Bugzilla, Jira, Scarab,或任何你喜欢的问题管理系统)的名称和URL,本例为 jira -->   
  72.   
  73. <issueManagement>   
  74.   
  75. <!-- 问题管理系统(例如jira)的名字, -->   
  76.   
  77. <system> jira </system>   
  78.   
  79. <!-- 该项目使用的问题管理系统的URL -->   
  80.   
  81. <url> http://jira.baidu.com/banseon </url>   
  82.   
  83. </issueManagement>   
  84.   
  85. <!-- 项目持续集成信息 -->   
  86.   
  87. <ciManagement>   
  88.   
  89. <!-- 持续集成系统的名字,例如continuum -->   
  90.   
  91. <system />   
  92.   
  93. <!-- 该项目使用的持续集成系统的URL(如果持续集成系统有web接口的话)。 -->   
  94.   
  95. <url />   
  96.   
  97. <!-- 构建完成时,需要通知的开发者/用户的配置项。包括被通知者信息和通知条件(错误,失败,成功,警告) -->   
  98.   
  99. <notifiers>   
  100.   
  101. <!-- 配置一种方式,当构建中断时,以该方式通知用户/开发者 -->   
  102.   
  103. <notifier>   
  104.   
  105. <!-- 传送通知的途径 -->   
  106.   
  107. <type />   
  108.   
  109. <!-- 发生错误时是否通知 -->   
  110.   
  111. <sendOnError />   
  112.   
  113. <!-- 构建失败时是否通知 -->   
  114.   
  115. <sendOnFailure />   
  116.   
  117. <!-- 构建成功时是否通知 -->   
  118.   
  119. <sendOnSuccess />   
  120.   
  121. <!-- 发生警告时是否通知 -->   
  122.   
  123. <sendOnWarning />   
  124.   
  125. <!-- 不赞成使用。通知发送到哪里 -->   
  126.   
  127. <address />   
  128.   
  129. <!-- 扩展配置项 -->   
  130.   
  131. <configuration />   
  132.   
  133. </notifier>   
  134.   
  135. </notifiers>   
  136.   
  137. </ciManagement>   
  138.   
  139. <!-- 项目创建年份,4位数字。当产生版权信息时需要使用这个值。 -->   
  140.   
  141. <inceptionYear />   
  142.   
  143. <!-- 项目相关邮件列表信息 -->   
  144.   
  145. <mailingLists>   
  146.   
  147. <!-- 该元素描述了项目相关的所有邮件列表。自动产生的网站引用这些信息。 -->   
  148.   
  149. <mailingList>   
  150.   
  151. <!-- 邮件的名称 -->   
  152.   
  153. <name> Demo </name>   
  154.   
  155. <!-- 发送邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->   
  156.   
  157. <post> banseon@126.com </post>   
  158.   
  159. <!-- 订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->   
  160.   
  161. <subscribe> banseon@126.com </subscribe>   
  162.   
  163. <!-- 取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->   
  164.   
  165. <unsubscribe> banseon@126.com </unsubscribe>   
  166.   
  167. <!-- 你可以浏览邮件信息的URL -->   
  168.   
  169. <archive> http:/hi.baidu.com/banseon/demo/dev/ </archive>   
  170.   
  171. </mailingList>   
  172.   
  173. </mailingLists>   
  174.   
  175. <!-- 项目开发者列表 -->   
  176.   
  177. <developers>   
  178.   
  179. <!-- 某个项目开发者的信息 -->   
  180.   
  181. <developer>   
  182.   
  183. <!-- SCM里项目开发者的唯一标识符 -->   
  184.   
  185. <id> HELLO WORLD </id>   
  186.   
  187. <!-- 项目开发者的全名 -->   
  188.   
  189. <name> banseon </name>   
  190.   
  191. <!-- 项目开发者的email -->   
  192.   
  193. <email> banseon@126.com </email>   
  194.   
  195. <!-- 项目开发者的主页的URL -->   
  196.   
  197. <url />   
  198.   
  199. <!-- 项目开发者在项目中扮演的角色,角色元素描述了各种角色 -->   
  200.   
  201. <roles>   
  202.   
  203. <role> Project Manager </role>   
  204.   
  205. <role> Architect </role>   
  206.   
  207. </roles>   
  208.   
  209. <!-- 项目开发者所属组织 -->   
  210.   
  211. <organization> demo </organization>   
  212.   
  213. <!-- 项目开发者所属组织的URL -->   
  214.   
  215. <organizationUrl> http://hi.baidu.com/banseon </organizationUrl>   
  216.   
  217. <!-- 项目开发者属性,如即时消息如何处理等 -->   
  218.   
  219. <properties>   
  220.   
  221. <dept> No </dept>   
  222.   
  223. </properties>   
  224.   
  225. <!-- 项目开发者所在时区, -11到12范围内的整数。 -->   
  226.   
  227. <timezone> -5 </timezone>   
  228.   
  229. </developer>   
  230.   
  231. </developers>   
  232.   
  233. <!-- 项目的其他贡献者列表 -->   
  234.   
  235. <contributors>   
  236.   
  237. <!-- 项目的其他贡献者。参见developers/developer元素 -->   
  238.   
  239. <contributor>   
  240.   
  241. <name /><email /><url /><organization /><organizationUrl /><roles /><timezone /><properties />   
  242.   
  243. </contributor>   
  244.   
  245. </contributors>   
  246.   
  247. <!-- 该元素描述了项目所有License列表。 应该只列出该项目的license列表,不要列出依赖项目的 license列表。如果列出多个license,用户可以选择它们中的一个而不是接受所有license。 -->   
  248.   
  249. <licenses>   
  250.   
  251. <!-- 描述了项目的license,用于生成项目的web站点的license页面,其他一些报表和validation也会用到该元素。 -->   
  252.   
  253. <license>   
  254.   
  255. <!-- license用于法律上的名称 -->   
  256.   
  257. <name> Apache 2 </name>   
  258.   
  259. <!-- 官方的license正文页面的URL -->   
  260.   
  261. <url> http://www.baidu.com/banseon/LICENSE-2.0.txt </url>   
  262.   
  263. <!-- 项目分发的主要方式:   
  264.   
  265. repo,可以从Maven库下载   
  266.   
  267. manual, 用户必须手动下载和安装依赖 -->   
  268.   
  269. <distribution> repo </distribution>   
  270.   
  271. <!-- 关于license的补充信息 -->   
  272.   
  273. <comments> A business-friendly OSS license </comments>   
  274.   
  275. </license>   
  276.   
  277. </licenses>   
  278.   
  279. <!-- SCM(Source Control Management)标签允许你配置你的代码库,供Maven web站点和其它插件使用。 -->   
  280.   
  281. <scm>   
  282.   
  283. <!-- SCM的URL,该URL描述了版本库和如何连接到版本库。欲知详情,请看SCMs提供的URL格式和列表。该连接只读。 -->   
  284.   
  285. <connection>   
  286.   
  287. scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)   
  288.   
  289. </connection>   
  290.   
  291. <!-- 给开发者使用的,类似connection元素。即该连接不仅仅只读 -->   
  292.   
  293. <developerConnection>   
  294.   
  295. scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk   
  296.   
  297. </developerConnection>   
  298.   
  299. <!-- 当前代码的标签,在开发阶段默认为HEAD -->   
  300.   
  301. <tag />   
  302.   
  303. <!-- 指向项目的可浏览SCM库(例如ViewVC或者Fisheye)的URL。 -->   
  304.   
  305. <url> http://svn.baidu.com/banseon </url>   
  306.   
  307. </scm>   
  308.   
  309. <!-- 描述项目所属组织的各种属性。Maven产生的文档用 -->   
  310.   
  311. <organization>   
  312.   
  313. <!-- 组织的全名 -->   
  314.   
  315. <name> demo </name>   
  316.   
  317. <!-- 组织主页的URL -->   
  318.   
  319. <url> http://www.baidu.com/banseon </url>   
  320.   
  321. </organization>   
  322.   
  323. <!-- 构建项目需要的信息 -->   
  324.   
  325. <build>   
  326.   
  327. <!-- 该元素设置了项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->   
  328.   
  329. <sourceDirectory />   
  330.   
  331. <!-- 该元素设置了项目脚本源码目录,该目录和源码目录不同:绝大多数情况下,该目录下的内容 会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)。 -->   
  332.   
  333. <scriptSourceDirectory />   
  334.   
  335. <!-- 该元素设置了项目单元测试使用的源码目录,当测试项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->   
  336.   
  337. <testSourceDirectory />   
  338.   
  339. <!-- 被编译过的应用程序class文件存放的目录。 -->   
  340.   
  341. <outputDirectory />   
  342.   
  343. <!-- 被编译过的测试class文件存放的目录。 -->   
  344.   
  345. <testOutputDirectory />   
  346.   
  347. <!-- 使用来自该项目的一系列构建扩展 -->   
  348.   
  349. <extensions>   
  350.   
  351. <!-- 描述使用到的构建扩展。 -->   
  352.   
  353. <extension>   
  354.   
  355. <!-- 构建扩展的groupId -->   
  356.   
  357. <groupId />   
  358.   
  359. <!-- 构建扩展的artifactId -->   
  360.   
  361. <artifactId />   
  362.   
  363. <!-- 构建扩展的版本 -->   
  364.   
  365. <version />   
  366.   
  367. </extension>   
  368.   
  369. </extensions>   
  370.   
  371. <!-- 当项目没有规定目标(Maven2 叫做阶段)时的默认值 -->   
  372.   
  373. <defaultGoal />   
  374.   
  375. <!-- 这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。 -->   
  376.   
  377. <resources>   
  378.   
  379. <!-- 这个元素描述了项目相关或测试相关的所有资源路径 -->   
  380.   
  381. <resource>   
  382.   
  383. <!-- 描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven/messages。然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。 -->   
  384.   
  385. <targetPath />   
  386.   
  387. <!-- 是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。 -->   
  388.   
  389. <filtering />   
  390.   
  391. <!-- 描述存放资源的目录,该路径相对POM路径 -->   
  392.   
  393. <directory />   
  394.   
  395. <!-- 包含的模式列表,例如**/*.xml. -->   
  396.   
  397. <includes />   
  398.   
  399. <!-- 排除的模式列表,例如**/*.xml -->   
  400.   
  401. <excludes />   
  402.   
  403. </resource>   
  404.   
  405. </resources>   
  406.   
  407. <!-- 这个元素描述了单元测试相关的所有资源路径,例如和单元测试相关的属性文件。 -->   
  408.   
  409. <testResources>   
  410.   
  411. <!-- 这个元素描述了测试相关的所有资源路径,参见build/resources/resource元素的说明 -->   
  412.   
  413. <testResource>   
  414.   
  415. <targetPath /><filtering /><directory /><includes /><excludes />   
  416.   
  417. </testResource>   
  418.   
  419. </testResources>   
  420.   
  421. <!-- 构建产生的所有文件存放的目录 -->   
  422.   
  423. <directory />   
  424.   
  425. <!-- 产生的构件的文件名,默认值是${artifactId}-${version}。 -->   
  426.   
  427. <finalName />   
  428.   
  429. <!-- 当filtering开关打开时,使用到的过滤器属性文件列表 -->   
  430.   
  431. <filters />   
  432.   
  433. <!-- 子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置 -->   
  434.   
  435. <pluginManagement>   
  436.   
  437. <!-- 使用的插件列表 。 -->   
  438.   
  439. <plugins>   
  440.   
  441. <!-- pl

    给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值