【maven】 pom.xml详解

Maven官网地址pom.xml说明

pom.xml详解

   1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   2 
   3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
   4 
   5     <!-- 父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 
   6         version。 -->
   7 
   8     <parent>
   9 
  10         <!-- 被继承的父项目的构件标识符 -->
  11 
  12         <artifactId />
  13 
  14         <!-- 被继承的父项目的全球唯一标识符 -->
  15 
  16         <groupId />
  17 
  18         <!-- 被继承的父项目的版本 -->
  19 
  20         <version />
  21 
  22         <!-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。 -->
  23 
  24         <relativePath />
  25 
  26     </parent>
  27 
  28     <!-- 声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 -->
  29 
  30     <modelVersion> 4.0.0 </modelVersion>
  31 
  32     <!-- 项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app -->
  33 
  34     <groupId> asia.banseon </groupId>
  35 
  36     <!-- 构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个特定的group 
  37         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标签), 
  58         不鼓励使用纯文本描述。如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。 -->
  59 
  60     <description> A maven project to study maven. </description>
  61 
  62     <!-- 描述了这个项目构建环境中的前提条件。 -->
  63 
  64     <prerequisites>
  65 
  66         <!-- 构建该项目或使用该插件所需要的Maven的最低版本 -->
  67 
  68         <maven />
  69 
  70     </prerequisites>
  71 
  72     <!-- 项目的问题管理系统(Bugzilla, Jira, Scarab,或任何你喜欢的问题管理系统)的名称和URL,本例为 jira -->
  73 
  74     <issueManagement>
  75 
  76         <!-- 问题管理系统(例如jira)的名字, -->
  77 
  78         <system> jira </system>
  79 
  80         <!-- 该项目使用的问题管理系统的URL -->
  81 
  82         <url> http://jira.baidu.com/banseon </url>
  83 
  84     </issueManagement>
  85 
  86     <!-- 项目持续集成信息 -->
  87 
  88     <ciManagement>
  89 
  90         <!-- 持续集成系统的名字,例如continuum -->
  91 
  92         <system />
  93 
  94         <!-- 该项目使用的持续集成系统的URL(如果持续集成系统有web接口的话)。 -->
  95 
  96         <url />
  97 
  98         <!-- 构建完成时,需要通知的开发者/用户的配置项。包括被通知者信息和通知条件(错误,失败,成功,警告) -->
  99 
 100         <notifiers>
 101 
 102             <!-- 配置一种方式,当构建中断时,以该方式通知用户/开发者 -->
 103 
 104             <notifier>
 105 
 106                 <!-- 传送通知的途径 -->
 107 
 108                 <type />
 109 
 110                 <!-- 发生错误时是否通知 -->
 111 
 112                 <sendOnError />
 113 
 114                 <!-- 构建失败时是否通知 -->
 115 
 116                 <sendOnFailure />
 117 
 118                 <!-- 构建成功时是否通知 -->
 119 
 120                 <sendOnSuccess />
 121 
 122                 <!-- 发生警告时是否通知 -->
 123 
 124                 <sendOnWarning />
 125 
 126                 <!-- 不赞成使用。通知发送到哪里 -->
 127 
 128                 <address />
 129 
 130                 <!-- 扩展配置项 -->
 131 
 132                 <configuration />
 133 
 134             </notifier>
 135 
 136         </notifiers>
 137 
 138     </ciManagement>
 139 
 140     <!-- 项目创建年份,4位数字。当产生版权信息时需要使用这个值。 -->
 141 
 142     <inceptionYear />
 143 
 144     <!-- 项目相关邮件列表信息 -->
 145 
 146     <mailingLists>
 147 
 148         <!-- 该元素描述了项目相关的所有邮件列表。自动产生的网站引用这些信息。 -->
 149 
 150         <mailingList>
 151 
 152             <!-- 邮件的名称 -->
 153 
 154             <name> Demo </name>
 155 
 156             <!-- 发送邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->
 157 
 158             <post> banseon@126.com </post>
 159 
 160             <!-- 订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->
 161 
 162             <subscribe> banseon@126.com </subscribe>
 163 
 164             <!-- 取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->
 165 
 166             <unsubscribe> banseon@126.com </unsubscribe>
 167 
 168             <!-- 你可以浏览邮件信息的URL -->
 169 
 170             <archive> http:/hi.baidu.com/banseon/demo/dev/ </archive>
 171 
 172         </mailingList>
 173 
 174     </mailingLists>
 175 
 176     <!-- 项目开发者列表 -->
 177 
 178     <developers>
 179 
 180         <!-- 某个项目开发者的信息 -->
 181 
 182         <developer>
 183 
 184             <!-- SCM里项目开发者的唯一标识符 -->
 185 
 186             <id> HELLO WORLD </id>
 187 
 188             <!-- 项目开发者的全名 -->
 189 
 190             <name> banseon </name>
 191 
 192             <!-- 项目开发者的email -->
 193 
 194             <email> banseon@126.com </email>
 195 
 196             <!-- 项目开发者的主页的URL -->
 197 
 198             <url />
 199 
 200             <!-- 项目开发者在项目中扮演的角色,角色元素描述了各种角色 -->
 201 
 202             <roles>
 203 
 204                 <role> Project Manager </role>
 205 
 206                 <role> Architect </role>
 207 
 208             </roles>
 209 
 210             <!-- 项目开发者所属组织 -->
 211 
 212             <organization> demo </organization>
 213 
 214             <!-- 项目开发者所属组织的URL -->
 215 
 216             <organizationUrl> http://hi.baidu.com/banseon </organizationUrl>
 217 
 218             <!-- 项目开发者属性,如即时消息如何处理等 -->
 219 
 220             <properties>
 221 
 222                 <dept> No </dept>
 223 
 224             </properties>
 225 
 226             <!-- 项目开发者所在时区, -11到12范围内的整数。 -->
 227 
 228             <timezone> -5 </timezone>
 229 
 230         </developer>
 231 
 232     </developers>
 233 
 234     <!-- 项目的其他贡献者列表 -->
 235 
 236     <contributors>
 237 
 238         <!-- 项目的其他贡献者。参见developers/developer元素 -->
 239 
 240         <contributor>
 241 
 242             <name />
 243             <email />
 244             <url />
 245             <organization />
 246             <organizationUrl />
 247             <roles />
 248             <timezone />
 249             <properties />
 250 
 251         </contributor>
 252 
 253     </contributors>
 254 
 255     <!-- 该元素描述了项目所有License列表。 应该只列出该项目的license列表,不要列出依赖项目的 license列表。如果列出多个license,用户可以选择它们中的一个而不是接受所有license。 -->
 256 
 257     <licenses>
 258 
 259         <!-- 描述了项目的license,用于生成项目的web站点的license页面,其他一些报表和validation也会用到该元素。 -->
 260 
 261         <license>
 262 
 263             <!-- license用于法律上的名称 -->
 264 
 265             <name> Apache 2 </name>
 266 
 267             <!-- 官方的license正文页面的URL -->
 268 
 269             <url> http://www.baidu.com/banseon/LICENSE-2.0.txt </url>
 270 
 271             <!-- 项目分发的主要方式: repo,可以从Maven库下载 manual, 用户必须手动下载和安装依赖 -->
 272 
 273             <distribution> repo </distribution>
 274 
 275             <!-- 关于license的补充信息 -->
 276 
 277             <comments> A business-friendly OSS license </comments>
 278 
 279         </license>
 280 
 281     </licenses>
 282 
 283     <!-- SCM(Source Control Management)标签允许你配置你的代码库,供Maven web站点和其它插件使用。 -->
 284 
 285     <scm>
 286 
 287         <!-- SCM的URL,该URL描述了版本库和如何连接到版本库。欲知详情,请看SCMs提供的URL格式和列表。该连接只读。 -->
 288 
 289         <connection> 
 290 
 291 scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk) 
 292 
 293 </connection>
 294 
 295         <!-- 给开发者使用的,类似connection元素。即该连接不仅仅只读 -->
 296 
 297         <developerConnection> 
 298 
 299 scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk 
 300 
 301 </developerConnection>
 302 
 303         <!-- 当前代码的标签,在开发阶段默认为HEAD -->
 304 
 305         <tag />
 306 
 307         <!-- 指向项目的可浏览SCM库(例如ViewVC或者Fisheye)的URL。 -->
 308 
 309         <url> http://svn.baidu.com/banseon </url>
 310 
 311     </scm>
 312 
 313     <!-- 描述项目所属组织的各种属性。Maven产生的文档用 -->
 314 
 315     <organization>
 316 
 317         <!-- 组织的全名 -->
 318 
 319         <name> demo </name>
 320 
 321         <!-- 组织主页的URL -->
 322 
 323         <url> http://www.baidu.com/banseon </url>
 324 
 325     </organization>
 326 
 327     <!-- 构建项目需要的信息 -->
 328 
 329     <build>
 330 
 331         <!-- 该元素设置了项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->
 332 
 333         <sourceDirectory />
 334 
 335         <!-- 该元素设置了项目脚本源码目录,该目录和源码目录不同:绝大多数情况下,该目录下的内容 会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)。 -->
 336 
 337         <scriptSourceDirectory />
 338 
 339         <!-- 该元素设置了项目单元测试使用的源码目录,当测试项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->
 340 
 341         <testSourceDirectory />
 342 
 343         <!-- 被编译过的应用程序class文件存放的目录。 -->
 344 
 345         <outputDirectory />
 346 
 347         <!-- 被编译过的测试class文件存放的目录。 -->
 348 
 349         <testOutputDirectory />
 350 
 351         <!-- 使用来自该项目的一系列构建扩展 -->
 352 
 353         <extensions>
 354 
 355             <!-- 描述使用到的构建扩展。 -->
 356 
 357             <extension>
 358 
 359                 <!-- 构建扩展的groupId -->
 360 
 361                 <groupId />
 362 
 363                 <!-- 构建扩展的artifactId -->
 364 
 365                 <artifactId />
 366 
 367                 <!-- 构建扩展的版本 -->
 368 
 369                 <version />
 370 
 371             </extension>
 372 
 373         </extensions>
 374 
 375         <!-- 当项目没有规定目标(Maven2 叫做阶段)时的默认值 -->
 376 
 377         <defaultGoal />
 378 
 379         <!-- 这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。 -->
 380 
 381         <resources>
 382 
 383             <!-- 这个元素描述了项目相关或测试相关的所有资源路径 -->
 384 
 385             <resource>
 386 
 387                 <!-- 描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven/messages。然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。 -->
 388 
 389                 <targetPath />
 390 
 391                 <!-- 是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。 -->
 392 
 393                 <filtering />
 394 
 395                 <!-- 描述存放资源的目录,该路径相对POM路径 -->
 396 
 397                 <directory />
 398 
 399                 <!-- 包含的模式列表,例如**/*.xml. -->
 400 
 401                 <includes />
 402 
 403                 <!-- 排除的模式列表,例如**/*.xml -->
 404 
 405                 <excludes />
 406 
 407             </resource>
 408 
 409         </resources>
 410 
 411         <!-- 这个元素描述了单元测试相关的所有资源路径,例如和单元测试相关的属性文件。 -->
 412 
 413         <testResources>
 414 
 415             <!-- 这个元素描述了测试相关的所有资源路径,参见build/resources/resource元素的说明 -->
 416 
 417             <testResource>
 418 
 419                 <targetPath />
 420                 <filtering />
 421                 <directory />
 422                 <includes />
 423                 <excludes />
 424 
 425             </testResource>
 426 
 427         </testResources>
 428 
 429         <!-- 构建产生的所有文件存放的目录 -->
 430 
 431         <directory />
 432 
 433         <!-- 产生的构件的文件名,默认值是${artifactId}-${version}。 -->
 434 
 435         <finalName />
 436 
 437         <!-- 当filtering开关打开时,使用到的过滤器属性文件列表 -->
 438 
 439         <filters />
 440 
 441         <!-- 子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置 -->
 442 
 443         <pluginManagement>
 444 
 445             <!-- 使用的插件列表 。 -->
 446 
 447             <plugins>
 448 
 449                 <!-- plugin元素包含描述插件所需要的信息。 -->
 450 
 451                 <plugin>
 452 
 453                     <!-- 插件在仓库里的group ID -->
 454 
 455                     <groupId />
 456 
 457                     <!-- 插件在仓库里的artifact ID -->
 458 
 459                     <artifactId />
 460 
 461                     <!-- 被使用的插件的版本(或版本范围) -->
 462 
 463                     <version />
 464 
 465                     <!-- 是否从该插件下载Maven扩展(例如打包和类型处理器),由于性能原因,只有在真需要下载时,该元素才被设置成enabled。 -->
 466 
 467                     <extensions />
 468 
 469                     <!-- 在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。 -->
 470 
 471                     <executions>
 472 
 473                         <!-- execution元素包含了插件执行需要的信息 -->
 474 
 475                         <execution>
 476 
 477                             <!-- 执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标 -->
 478 
 479                             <id />
 480 
 481                             <!-- 绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段 -->
 482 
 483                             <phase />
 484 
 485                             <!-- 配置的执行目标 -->
 486 
 487                             <goals />
 488 
 489                             <!-- 配置是否被传播到子POM -->
 490 
 491                             <inherited />
 492 
 493                             <!-- 作为DOM对象的配置 -->
 494 
 495                             <configuration />
 496 
 497                         </execution>
 498 
 499                     </executions>
 500 
 501                     <!-- 项目引入插件所需要的额外依赖 -->
 502 
 503                     <dependencies>
 504 
 505                         <!-- 参见dependencies/dependency元素 -->
 506 
 507                         <dependency>
 508 
 509 
 510 
 511                         </dependency>
 512 
 513                     </dependencies>
 514 
 515                     <!-- 任何配置是否被传播到子项目 -->
 516 
 517                     <inherited />
 518 
 519                     <!-- 作为DOM对象的配置 -->
 520 
 521                     <configuration />
 522 
 523                 </plugin>
 524 
 525             </plugins>
 526 
 527         </pluginManagement>
 528 
 529         <!-- 使用的插件列表 -->
 530 
 531         <plugins>
 532 
 533             <!-- 参见build/pluginManagement/plugins/plugin元素 -->
 534 
 535             <plugin>
 536 
 537                 <groupId />
 538                 <artifactId />
 539                 <version />
 540                 <extensions />
 541 
 542                 <executions>
 543 
 544                     <execution>
 545 
 546                         <id />
 547                         <phase />
 548                         <goals />
 549                         <inherited />
 550                         <configuration />
 551 
 552                     </execution>
 553 
 554                 </executions>
 555 
 556                 <dependencies>
 557 
 558                     <!-- 参见dependencies/dependency元素 -->
 559 
 560                     <dependency>
 561 
 562 
 563 
 564                     </dependency>
 565 
 566                 </dependencies>
 567 
 568                 <goals />
 569                 <inherited />
 570                 <configuration />
 571 
 572             </plugin>
 573 
 574         </plugins>
 575 
 576     </build>
 577 
 578     <!-- 在列的项目构建profile,如果被激活,会修改构建处理 -->
 579 
 580     <profiles>
 581 
 582         <!-- 根据环境参数或命令行参数激活某个构建处理 -->
 583 
 584         <profile>
 585 
 586             <!-- 构建配置的唯一标识符。即用于命令行激活,也用于在继承时合并具有相同标识符的profile。 -->
 587 
 588             <id />
 589 
 590             <!-- 自动触发profile的条件逻辑。Activation是profile的开启钥匙。profile的力量来自于它 能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。activation元素并不是激活profile的唯一方式。 -->
 591 
 592             <activation>
 593 
 594                 <!-- profile默认是否激活的标志 -->
 595 
 596                 <activeByDefault />
 597 
 598                 <!-- 当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有版本不是以1.4开头的JDK。 -->
 599 
 600                 <jdk />
 601 
 602                 <!-- 当匹配的操作系统属性被检测到,profile被激活。os元素可以定义一些操作系统相关的属性。 -->
 603 
 604                 <os>
 605 
 606                     <!-- 激活profile的操作系统的名字 -->
 607 
 608                     <name> Windows XP </name>
 609 
 610                     <!-- 激活profile的操作系统所属家族(如 'windows') -->
 611 
 612                     <family> Windows </family>
 613 
 614                     <!-- 激活profile的操作系统体系结构 -->
 615 
 616                     <arch> x86 </arch>
 617 
 618                     <!-- 激活profile的操作系统版本 -->
 619 
 620                     <version> 5.1.2600 </version>
 621 
 622                 </os>
 623 
 624                 <!-- 如果Maven检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,Profile就会被激活。如果值 
 625                     字段是空的,那么存在属性名称字段就会激活profile,否则按区分大小写方式匹配属性值字段 -->
 626 
 627                 <property>
 628 
 629                     <!-- 激活profile的属性的名称 -->
 630 
 631                     <name> mavenVersion </name>
 632 
 633                     <!-- 激活profile的属性的值 -->
 634 
 635                     <value> 2.0.3 </value>
 636 
 637                 </property>
 638 
 639                 <!-- 提供一个文件名,通过检测该文件的存在或不存在来激活profile。missing检查文件是否存在,如果不存在则激活 profile。另一方面,exists则会检查文件是否存在,如果存在则激活profile。 -->
 640 
 641                 <file>
 642 
 643                     <!-- 如果指定的文件存在,则激活profile。 -->
 644 
 645                     <exists> /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </exists>
 646 
 647                     <!-- 如果指定的文件不存在,则激活profile。 -->
 648 
 649                     <missing> /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </missing>
 650 
 651                 </file>
 652 
 653             </activation>
 654 
 655             <!-- 构建项目所需要的信息。参见build元素 -->
 656 
 657             <build>
 658 
 659                 <defaultGoal />
 660 
 661                 <resources>
 662 
 663                     <resource>
 664 
 665                         <targetPath />
 666                         <filtering />
 667                         <directory />
 668                         <includes />
 669                         <excludes />
 670 
 671                     </resource>
 672 
 673                 </resources>
 674 
 675                 <testResources>
 676 
 677                     <testResource>
 678 
 679                         <targetPath />
 680                         <filtering />
 681                         <directory />
 682                         <includes />
 683                         <excludes />
 684 
 685                     </testResource>
 686 
 687                 </testResources>
 688 
 689                 <directory />
 690                 <finalName />
 691                 <filters />
 692 
 693                 <pluginManagement>
 694 
 695                     <plugins>
 696 
 697                         <!-- 参见build/pluginManagement/plugins/plugin元素 -->
 698 
 699                         <plugin>
 700 
 701                             <groupId />
 702                             <artifactId />
 703                             <version />
 704                             <extensions />
 705 
 706                             <executions>
 707 
 708                                 <execution>
 709 
 710                                     <id />
 711                                     <phase />
 712                                     <goals />
 713                                     <inherited />
 714                                     <configuration />
 715 
 716                                 </execution>
 717 
 718                             </executions>
 719 
 720                             <dependencies>
 721 
 722                                 <!-- 参见dependencies/dependency元素 -->
 723 
 724                                 <dependency>
 725 
 726 
 727 
 728                                 </dependency>
 729 
 730                             </dependencies>
 731 
 732                             <goals />
 733                             <inherited />
 734                             <configuration />
 735 
 736                         </plugin>
 737 
 738                     </plugins>
 739 
 740                 </pluginManagement>
 741 
 742                 <plugins>
 743 
 744                     <!-- 参见build/pluginManagement/plugins/plugin元素 -->
 745 
 746                     <plugin>
 747 
 748                         <groupId />
 749                         <artifactId />
 750                         <version />
 751                         <extensions />
 752 
 753                         <executions>
 754 
 755                             <execution>
 756 
 757                                 <id />
 758                                 <phase />
 759                                 <goals />
 760                                 <inherited />
 761                                 <configuration />
 762 
 763                             </execution>
 764 
 765                         </executions>
 766 
 767                         <dependencies>
 768 
 769                             <!-- 参见dependencies/dependency元素 -->
 770 
 771                             <dependency>
 772 
 773 
 774 
 775                             </dependency>
 776 
 777                         </dependencies>
 778 
 779                         <goals />
 780                         <inherited />
 781                         <configuration />
 782 
 783                     </plugin>
 784 
 785                 </plugins>
 786 
 787             </build>
 788 
 789             <!-- 模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径 -->
 790 
 791             <modules />
 792 
 793             <!-- 发现依赖和扩展的远程仓库列表。 -->
 794 
 795             <repositories>
 796 
 797                 <!-- 参见repositories/repository元素 -->
 798 
 799                 <repository>
 800 
 801                     <releases>
 802 
 803                         <enabled />
 804                         <updatePolicy />
 805                         <checksumPolicy />
 806 
 807                     </releases>
 808 
 809                     <snapshots>
 810 
 811                         <enabled />
 812                         <updatePolicy />
 813                         <checksumPolicy />
 814 
 815                     </snapshots>
 816 
 817                     <id />
 818                     <name />
 819                     <url />
 820                     <layout />
 821 
 822                 </repository>
 823 
 824             </repositories>
 825 
 826             <!-- 发现插件的远程仓库列表,这些插件用于构建和报表 -->
 827 
 828             <pluginRepositories>
 829 
 830                 <!-- 包含需要连接到远程插件仓库的信息.参见repositories/repository元素 -->
 831 
 832                 <pluginRepository>
 833 
 834                     <releases>
 835 
 836                         <enabled />
 837                         <updatePolicy />
 838                         <checksumPolicy />
 839 
 840                     </releases>
 841 
 842                     <snapshots>
 843 
 844                         <enabled />
 845                         <updatePolicy />
 846                         <checksumPolicy />
 847 
 848                     </snapshots>
 849 
 850                     <id />
 851                     <name />
 852                     <url />
 853                     <layout />
 854 
 855                 </pluginRepository>
 856 
 857             </pluginRepositories>
 858 
 859             <!-- 该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。要获取更多信息,请看项目依赖机制。 -->
 860 
 861             <dependencies>
 862 
 863                 <!-- 参见dependencies/dependency元素 -->
 864 
 865                 <dependency>
 866 
 867 
 868 
 869                 </dependency>
 870 
 871             </dependencies>
 872 
 873             <!-- 不赞成使用. 现在Maven忽略该元素. -->
 874 
 875             <reports />
 876 
 877             <!-- 该元素包括使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接。参见reporting元素 -->
 878 
 879             <reporting>
 880 
 881 
 882 
 883             </reporting>
 884 
 885             <!-- 参见dependencyManagement元素 -->
 886 
 887             <dependencyManagement>
 888 
 889                 <dependencies>
 890 
 891                     <!-- 参见dependencies/dependency元素 -->
 892 
 893                     <dependency>
 894 
 895 
 896 
 897                     </dependency>
 898 
 899                 </dependencies>
 900 
 901             </dependencyManagement>
 902 
 903             <!-- 参见distributionManagement元素 -->
 904 
 905             <distributionManagement>
 906 
 907 
 908 
 909             </distributionManagement>
 910 
 911             <!-- 参见properties元素 -->
 912 
 913             <properties />
 914 
 915         </profile>
 916 
 917     </profiles>
 918 
 919     <!-- 模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径 -->
 920 
 921     <modules />
 922 
 923     <!-- 发现依赖和扩展的远程仓库列表。 -->
 924 
 925     <repositories>
 926 
 927         <!-- 包含需要连接到远程仓库的信息 -->
 928 
 929         <repository>
 930 
 931             <!-- 如何处理远程仓库里发布版本的下载 -->
 932 
 933             <releases>
 934 
 935                 <!-- true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
 936 
 937                 <enabled />
 938 
 939                 <!-- 该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
 940 
 941                 <updatePolicy />
 942 
 943                 <!-- 当Maven验证构件校验文件失败时该怎么做:ignore(忽略),fail(失败),或者warn(警告)。 -->
 944 
 945                 <checksumPolicy />
 946 
 947             </releases>
 948 
 949             <!-- 如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素 -->
 950 
 951             <snapshots>
 952 
 953                 <enabled />
 954                 <updatePolicy />
 955                 <checksumPolicy />
 956 
 957             </snapshots>
 958 
 959             <!-- 远程仓库唯一标识符。可以用来匹配在settings.xml文件里配置的远程仓库 -->
 960 
 961             <id> banseon-repository-proxy </id>
 962 
 963             <!-- 远程仓库名称 -->
 964 
 965             <name> banseon-repository-proxy </name>
 966 
 967             <!-- 远程仓库URL,按protocol://hostname/path形式 -->
 968 
 969             <url> http://192.168.1.169:9999/repository/ </url>
 970 
 971             <!-- 用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven 2为其仓库提供了一个默认的布局;然而,Maven 
 972                 1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。 -->
 973 
 974             <layout> default </layout>
 975 
 976         </repository>
 977 
 978     </repositories>
 979 
 980     <!-- 发现插件的远程仓库列表,这些插件用于构建和报表 -->
 981 
 982     <pluginRepositories>
 983 
 984         <!-- 包含需要连接到远程插件仓库的信息.参见repositories/repository元素 -->
 985 
 986         <pluginRepository>
 987 
 988 
 989 
 990         </pluginRepository>
 991 
 992     </pluginRepositories>
 993 
 994 
 995 
 996     <!-- 该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。要获取更多信息,请看项目依赖机制。 -->
 997 
 998     <dependencies>
 999 
1000         <dependency>
1001 
1002             <!-- 依赖的group ID -->
1003 
1004             <groupId> org.apache.maven </groupId>
1005 
1006             <!-- 依赖的artifact ID -->
1007 
1008             <artifactId> maven-artifact </artifactId>
1009 
1010             <!-- 依赖的版本号。 在Maven 2里, 也可以配置成版本号的范围。 -->
1011 
1012             <version> 3.8.1 </version>
1013 
1014             <!-- 依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展名或分类器。类型经常和使用的打包方式对应,尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。如果设置extensions为 
1015                 true,就可以在plugin里定义新的类型。所以前面的类型的例子不完整。 -->
1016 
1017             <type> jar </type>
1018 
1019             <!-- 依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。例如,如果你想要构建两个单独的构件成JAR,一个使用Java 
1020                 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生成两个单独的JAR构件。 -->
1021 
1022             <classifier></classifier>
1023 
1024             <!-- 依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。 - compile :默认范围,用于编译 - provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath 
1025                 - runtime: 在执行时需要使用 - test: 用于test任务时使用 - system: 需要外在提供相应的元素。通过systemPath来取得 
1026                 - systemPath: 仅用于范围为system。提供相应的路径 - optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用 -->
1027 
1028             <scope> test </scope>
1029 
1030             <!-- 仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}。 -->
1031 
1032             <systemPath></systemPath>
1033 
1034             <!-- 当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的依赖。此元素主要用于解决版本冲突问题 -->
1035 
1036             <exclusions>
1037 
1038                 <exclusion>
1039 
1040                     <artifactId> spring-core </artifactId>
1041 
1042                     <groupId> org.springframework </groupId>
1043 
1044                 </exclusion>
1045 
1046             </exclusions>
1047 
1048             <!-- 可选依赖,如果你在项目B中把C依赖声明为可选,你就需要在依赖于B的项目(例如项目A)中显式的引用对C的依赖。可选依赖阻断依赖的传递性。 -->
1049 
1050             <optional>true</optional>
1051 
1052         </dependency>
1053 
1054     </dependencies>
1055 
1056     <!-- 不赞成使用. 现在Maven忽略该元素. -->
1057 
1058     <reports></reports>
1059 
1060     <!-- 该元素描述使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接。 -->
1061 
1062     <reporting>
1063 
1064         <!-- true,则,网站不包括默认的报表。这包括“项目信息”菜单中的报表。 -->
1065 
1066         <excludeDefaults />
1067 
1068         <!-- 所有产生的报表存放到哪里。默认值是${project.build.directory}/site。 -->
1069 
1070         <outputDirectory />
1071 
1072         <!-- 使用的报表插件和他们的配置。 -->
1073 
1074         <plugins>
1075 
1076             <!-- plugin元素包含描述报表插件需要的信息 -->
1077 
1078             <plugin>
1079 
1080                 <!-- 报表插件在仓库里的group ID -->
1081 
1082                 <groupId />
1083 
1084                 <!-- 报表插件在仓库里的artifact ID -->
1085 
1086                 <artifactId />
1087 
1088                 <!-- 被使用的报表插件的版本(或版本范围) -->
1089 
1090                 <version />
1091 
1092                 <!-- 任何配置是否被传播到子项目 -->
1093 
1094                 <inherited />
1095 
1096                 <!-- 报表插件的配置 -->
1097 
1098                 <configuration />
1099 
1100                 <!-- 一组报表的多重规范,每个规范可能有不同的配置。一个规范(报表集)对应一个执行目标 。例如,有1,2,3,4,5,6,7,8,9个报表。1,2,5构成A报表集,对应一个执行目标。2,5,8构成B报表集,对应另一个执行目标 -->
1101 
1102                 <reportSets>
1103 
1104                     <!-- 表示报表的一个集合,以及产生该集合的配置 -->
1105 
1106                     <reportSet>
1107 
1108                         <!-- 报表集合的唯一标识符,POM继承时用到 -->
1109 
1110                         <id />
1111 
1112                         <!-- 产生报表集合时,被使用的报表的配置 -->
1113 
1114                         <configuration />
1115 
1116                         <!-- 配置是否被继承到子POMs -->
1117 
1118                         <inherited />
1119 
1120                         <!-- 这个集合里使用到哪些报表 -->
1121 
1122                         <reports />
1123 
1124                     </reportSet>
1125 
1126                 </reportSets>
1127 
1128             </plugin>
1129 
1130         </plugins>
1131 
1132     </reporting>
1133 
1134     <!-- 继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和artifact 
1135         ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID匹配到这里的依赖,并使用这里的依赖信息。 -->
1136 
1137     <dependencyManagement>
1138 
1139         <dependencies>
1140 
1141             <!-- 参见dependencies/dependency元素 -->
1142 
1143             <dependency>
1144 
1145 
1146 
1147             </dependency>
1148 
1149         </dependencies>
1150 
1151     </dependencyManagement>
1152 
1153     <!-- 项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。 -->
1154 
1155     <distributionManagement>
1156 
1157         <!-- 部署项目产生的构件到远程仓库需要的信息 -->
1158 
1159         <repository>
1160 
1161             <!-- 是分配给快照一个唯一的版本号(由时间戳和构建流水号)?还是每次都使用相同的版本号?参见repositories/repository元素 -->
1162 
1163             <uniqueVersion />
1164 
1165             <id> banseon-maven2 </id>
1166 
1167             <name> banseon maven2 </name>
1168 
1169             <url> file://${basedir}/target/deploy </url>
1170 
1171             <layout />
1172 
1173         </repository>
1174 
1175         <!-- 构件的快照部署到哪里?如果没有配置该元素,默认部署到repository元素配置的仓库,参见distributionManagement/repository元素 -->
1176 
1177         <snapshotRepository>
1178 
1179             <uniqueVersion />
1180 
1181             <id> banseon-maven2 </id>
1182 
1183             <name> Banseon-maven2 Snapshot Repository </name>
1184 
1185             <url> scp://svn.baidu.com/banseon:/usr/local/maven-snapshot </url>
1186 
1187             <layout />
1188 
1189         </snapshotRepository>
1190 
1191         <!-- 部署项目的网站需要的信息 -->
1192 
1193         <site>
1194 
1195             <!-- 部署位置的唯一标识符,用来匹配站点和settings.xml文件里的配置 -->
1196 
1197             <id> banseon-site </id>
1198 
1199             <!-- 部署位置的名称 -->
1200 
1201             <name> business api website </name>
1202 
1203             <!-- 部署位置的URL,按protocol://hostname/path形式 -->
1204 
1205             <url> 
1206 
1207 scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web 
1208 
1209 </url>
1210 
1211         </site>
1212 
1213         <!-- 项目下载页面的URL。如果没有该元素,用户应该参考主页。使用该元素的原因是:帮助定位那些不在仓库里的构件(由于license限制)。 -->
1214 
1215         <downloadUrl />
1216 
1217         <!-- 如果构件有了新的group ID和artifact ID(构件移到了新的位置),这里列出构件的重定位信息。 -->
1218 
1219         <relocation>
1220 
1221             <!-- 构件新的group ID -->
1222 
1223             <groupId />
1224 
1225             <!-- 构件新的artifact ID -->
1226 
1227             <artifactId />
1228 
1229             <!-- 构件新的版本号 -->
1230 
1231             <version />
1232 
1233             <!-- 显示给用户的,关于移动的额外信息,例如原因。 -->
1234 
1235             <message />
1236 
1237         </relocation>
1238 
1239         <!-- 给出该构件在远程仓库的状态。不得在本地项目中设置该元素,因为这是工具自动更新的。有效的值有:none(默认),converted(仓库管理员从Maven 
1240             1 POM转换过来),partner(直接从伙伴Maven 2仓库同步过来),deployed(从Maven 2实例部署),verified(被核实时正确的和最终的)。 -->
1241 
1242         <status />
1243 
1244     </distributionManagement>
1245 
1246     <!-- 以值替代名称,Properties可以在整个POM中使用,也可以作为触发条件(见settings.xml配置文件里activation元素的说明)。格式是<name>value</name>。 -->
1247 
1248     <properties />
1249 
1250 </project> 
View Code
原文地址:https://www.cnblogs.com/sxdcgaq8080/p/5586670.html