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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了史上最全的maven pom.xml文件教程详解相关的知识,希望对你有一定的参考价值。

 

    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[email protected] </post>   
    158.   
    159. <!-- 订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->   
    160.   
    161. <subscribe[email protected] </subscribe>   
    162.   
    163. <!-- 取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->   
    164.   
    165. <unsubscribe[email protected] </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[email protected] </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. <!-- plugin元素包含描述插件所需要的信息。 -->   
    442.   
    443. <plugin>   
    444.   
    445. <!-- 插件在仓库里的group ID -->   
    446.   
    447. <groupId />   
    448.   
    449. <!-- 插件在仓库里的artifact ID -->   
    450.   
    451. <artifactId />   
    452.   
    453. <!-- 被使用的插件的版本(或版本范围) -->   
    454.   
    455. <version />   
    456.   
    457. <!-- 是否从该插件下载Maven扩展(例如打包和类型处理器),由于性能原因,只有在真需要下载时,该元素才被设置成enabled。 -->   
    458.   
    459. <extensions />   
    460.   
    461. <!-- 在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。 -->   
    462.   
    463. <executions>   
    464.   
    465. <!-- execution元素包含了插件执行需要的信息 -->   
    466.   
    467. <execution>   
    468.   
    469. <!-- 执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标 -->   
    470.   
    471. <id />   
    472.   
    473. <!-- 绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段 -->   
    474.   
    475. <phase />   
    476.   
    477. <!-- 配置的执行目标 -->   
    478.   
    479. <goals />   
    480.   
    481. <!-- 配置是否被传播到子POM -->   
    482.   
    483. <inherited />   
    484.   
    485. <!-- 作为DOM对象的配置 -->   
    486.   
    487. <configuration />   
    488.   
    489. </execution>   
    490.   
    491. </executions>   
    492.   
    493. <!-- 项目引入插件所需要的额外依赖 -->   
    494.   
    495. <dependencies>   
    496.   
    497. <!-- 参见dependencies/dependency元素 -->   
    498.   
    499. <dependency>   
    500.   
    501.   
    502.   
    503. </dependency>   
    504.   
    505. </dependencies>   
    506.   
    507. <!-- 任何配置是否被传播到子项目 -->   
    508.   
    509. <inherited />   
    510.   
    511. <!-- 作为DOM对象的配置 -->   
    512.   
    513. <configuration />   
    514.   
    515. </plugin>   
    516.   
    517. </plugins>   
    518.   
    519. </pluginManagement>   
    520.   
    521. <!-- 使用的插件列表 -->   
    522.   
    523. <plugins>   
    524.   
    525. <!-- 参见build/pluginManagement/plugins/plugin元素 -->   
    526.   
    527. <plugin>   
    528.   
    529. <groupId /><artifactId /><version /><extensions />   
    530.   
    531. <executions>   
    532.   
    533. <execution>   
    534.   
    535. <id /><phase /><goals /><inherited /><configuration />   
    536.   
    537. </execution>   
    538.   
    539. </executions>   
    540.   
    541. <dependencies>   
    542.   
    543. <!-- 参见dependencies/dependency元素 -->   
    544.   
    545. <dependency>   
    546.   
    547.   
    548.   
    549. </dependency>   
    550.   
    551. </dependencies>   
    552.   
    553. <goals /><inherited /><configuration />   
    554.   
    555. </plugin>   
    556.   
    557. </plugins>   
    558.   
    559. </build>   
    560.   
    561. <!-- 在列的项目构建profile,如果被激活,会修改构建处理 -->   
    562.   
    563. <profiles>   
    564.   
    565. <!-- 根据环境参数或命令行参数激活某个构建处理 -->   
    566.   
    567. <profile>   
    568.   
    569. <!-- 构建配置的唯一标识符。即用于命令行激活,也用于在继承时合并具有相同标识符的profile。 -->   
    570.   
    571. <id />   
    572.   
    573. <!-- 自动触发profile的条件逻辑。Activation是profile的开启钥匙。profile的力量来自于它   
    574.   
    575. 能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。activation元素并不是激活profile的唯一方式。 -->   
    576.   
    577. <activation>   
    578.   
    579. <!-- profile默认是否激活的标志 -->   
    580.   
    581. <activeByDefault />   
    582.   
    583. <!-- 当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有版本不是以1.4开头的JDK。 -->   
    584.   
    585. <jdk />   
    586.   
    587. <!-- 当匹配的操作系统属性被检测到,profile被激活。os元素可以定义一些操作系统相关的属性。 -->   
    588.   
    589. <os>   
    590.   
    591. <!-- 激活profile的操作系统的名字 -->   
    592.   
    593. <name> Windows XP </name>   
    594.   
    595. <!-- 激活profile的操作系统所属家族(如 ‘windows‘) -->   
    596.   
    597. <family> Windows </family>   
    598.   
    599. <!-- 激活profile的操作系统体系结构 -->   
    600.   
    601. <arch> x86 </arch>   
    602.   
    603. <!-- 激活profile的操作系统版本 -->   
    604.   
    605. <version> 5.1.2600 </version>   
    606.   
    607. </os>   
    608.   
    609. <!-- 如果Maven检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,Profile就会被激活。如果值   
    610.   
    611. 字段是空的,那么存在属性名称字段就会激活profile,否则按区分大小写方式匹配属性值字段 -->   
    612.   
    613. <property>   
    614.   
    615. <!-- 激活profile的属性的名称 -->   
    616.   
    617. <name> mavenVersion </name>   
    618.   
    619. <!-- 激活profile的属性的值 -->   
    620.   
    621. <value> 2.0.3 </value>   
    622.   
    623. </property>   
    624.   
    625. <!-- 提供一个文件名,通过检测该文件的存在或不存在来激活profile。missing检查文件是否存在,如果不存在则激活   
    626.   
    627. profile。另一方面,exists则会检查文件是否存在,如果存在则激活profile。 -->   
    628.   
    629. <file>   
    630.   
    631. <!-- 如果指定的文件存在,则激活profile。 -->   
    632.   
    633. <exists> /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </exists>   
    634.   
    635. <!-- 如果指定的文件不存在,则激活profile。 -->   
    636.   
    637. <missing> /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </missing>   
    638.   
    639. </file>   
    640.   
    641. </activation>   
    642.   
    643. <!-- 构建项目所需要的信息。参见build元素 -->   
    644.   
    645. <build>   
    646.   
    647. <defaultGoal />   
    648.   
    649. <resources>   
    650.   
    651. <resource>   
    652. &

以上是关于史上最全的maven pom.xml文件教程详解的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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