【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

 

时间: 2024-08-04 04:47:47

【maven】 pom.xml详解的相关文章

svn-Myeclipse10 Maven pom.xml报错

问题描述 Myeclipse10 Maven pom.xml报错 我电脑上面有eclipse和MyEclipse都有,在eclipse中重SVN上面下载项目没有错!但是在MyEclipse中下载下来pom.xml就报错~! 报错: Project build error: Non-resolvable parent POM: Could not find artifact com.ifec.blueair:blueair-packagemanager:pom:0.0.1-SNAPSHOT and

PHP 以POST方式提交XML、获取XML,解析XML详解及实例_php实例

PHP 以POST方式提交XML.获取XML,最后解析XML 以POST方式提交XML // Do a POST $data="<?xml version='1.0' encoding='UTF-8'?> <TypeRsp> <CONNECT_ID>1</CONNECT_ID> <MO_MESSAGE_ID>2</MO_MESSAGE_ID> </TypeRsp>"; //$data = array('

tomcat配置文件server.xml详解

转自:http://blog.csdn.net/pg_Roger/article/details/8972432 元素名 属性 解释 server port 指定一个端口,这个端口负责监听关闭tomcat 的请求 shutdown 指定向端口发送的命令字符串 service name 指定service 的名字 Connector ( 表示客户端和service 之间的连接) port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 minProcessors 服务器启动时创建的处

tomcat简介之web.xml详解(转)

http://blog.csdn.net/facepp/archive/2008/04/19/2306602.aspx   位于每个Web应用的WEB-INF路径下的web.xml文件被称为配置描述符,这个 web.xml文件对于Java Web应用十分重要,每个Java Web应用都必须包含一个web.xml文件,且必须放在WEB-INF路径下.   对于Java Web应用而言,WEB-INF是一个特殊的文件夹,Web容器会包含该文件夹下的内容,客户端浏览器无法访问WEB-INF路径下的任何

maven - pom.xml 聚合(父)工程 基本内容演示

企业开发中所用到的基本jar包以及插件都已在此 可以自己根据实际情况酌情增减   1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org

DWR配置文件web.xml详解

1.最小配置     <servlet>       <servlet-name>dwr-invoker</servlet-name>       <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>       </servlet>       <servlet-mapping>       <servlet-name>dwr-invoke

Ant之build.xml详解

Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令.当编译Linux内核及一些软件的源程序时,经常要用这个命令.Make命令其实就是一个项目管理工具,而Ant所实现功能与此类似.像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷.最初Ant开发者在开发跨平台的应用时,用样也是基于这些缺陷对Ant做了更好的设计. Ant 与 makefile Makefile有一些不足之处,比如

跟益达学Solr5之Schema.xml详解

 schema.xml是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否分词,是否存储,是否标准化即Norms,是否存储项向量等等.      schema.xml配置文件的根元素就是schema,有个name属性,name属性值可以随便配,根元素没什么好说的,schema元素下主要有两个标签元素即field和fieldType,field表示域,用来定义域,fieldType用来定义域类型.      field元素有很多属性可以配置,我一一做个解释:    name: 表示域的

PHP操作XML详解(1/4)

1 XML简介 XML是"可扩展性标识语言(eXtensible Markup Language)"的缩写,是一种类似于 HTML的标记性语言.但是与 HTML不同,XML主要用于描述数据和存放数据,而 HTML主要用于显示数据. XML是一种"元标记"语言,开发者可以根据自己的需要创建标记的名称.例如,下面的 XML代码可以用来描述一条留言.  代码如下 复制代码 <thread> <title>Welcome</title>