Maven基础配置之pom.xml详解

本文转字:https://www.2cto.com/kf/201801/712822.html

一、基础配置

  

 1 <!-- 声明项目描述符遵循哪一个POM模型版本,maven2和3只能为4.0.0 -->
 2     <modelversion>4.0.0</modelversion>
 3      
 4     <!-- 基本配置 -->
 5     <!-- 公司或者组织的唯一标志,并且构建时生成的路径也是由此生成  -->
 6     <groupid>com.aaa.bbb</groupid>
 7      
 8     <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
 9     <artifactid>bbb-ccc</artifactid>
10      
11     <!-- 本项目目前所处的版本号 -->
12     <version>0.0.1-SNAPSHOT</version>
13      
14     <!-- 
15         打包类型,默认是jar,可以配置成war、jar、pom类型,
16         插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型
17      -->  
18     <packaging>jar</packaging>
19      
20      
21     <!-- 
22         项目相关依赖配置,如果在父项目写的依赖,会被子项目引用,一般父项目会将子项目公用的依赖引入
23      -->
24     <dependencies>
25         <!-- 一个依赖包 -->
26         <dependency>
27             <!-- 依赖项的groupId -->
28             <groupid></groupid>
29             <!-- 依赖项的artifactId -->
30             <artifactid></artifactid>
31             <!-- 依赖项的版本 -->
32             <version></version>
33             <!-- 
34                 依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。
35                 例如,如果你想要构建两个单独的构件成JAR,一个使用Java 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生成两个单独的JAR构件。
36              -->
37             <classifier></classifier>
38             <!-- 屏蔽依赖关系。 比如项目中使用的libA依赖某个库的1.0版,libB依赖某个库的2.0版,现在想统一使用2.0版,就应该屏蔽掉对1.0版的依赖 -->
39             <exclusions>
40                 <exclusion>
41                     <groupid></groupid>
42                     <artifactid></artifactid>
43                 </exclusion>
44             </exclusions>
45             <!-- 设置指依赖是否可选,默认为false,即子项目默认都继承:为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似  --> 
46             <optional>false</optional>
47             <!-- 依赖项的适用范围:
48                 compile :缺省值,适用于所有阶段,会随着项目一起发布。
49                 provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
50                 runtime: 只在运行时使用,如JDBC驱动,适用运行和测试阶段。
51                 test: 只在测试时使用,用于编译和运行测试代码。不会随项目发布。
52                 system: 类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
53                 optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用
54                 systemPath: 仅用于范围为system。提供相应的路径
55              -->
56             <scope>compile</scope>
57             <!-- 仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}。 -->
58             <systempath></systempath>
59             <!-- 默认为jar类型,常用的类型有:jar,war,test-jar...,可设置plugins中的extensions值为true后在增加 新的类型 -->
60             <type></type>
61         </dependency>
62     </dependencies>
63      
64     <!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${struts.version} -->
65     <properties>
66         <struts.version>2.3.15</struts.version>
67         <mysql.version>5.1.29
68         <hibernate.version>4.3.1.Final</hibernate.version>
69     </properties>

二、构建配置

        

  1 <build>  
  2    
  3         <!-- 产生的构件的文件名,默认值是${artifactId}-${version}。 -->  
  4         <finalname>myPorjectName</finalname>  
  5        
  6         <!-- 构建产生的所有文件存放的目录,默认为${basedir}/target,即项目根目录下的target -->  
  7         <directory>${basedir}/target</directory>  
  8        
  9         <!--当项目没有规定目标(Maven2叫做阶段(phase))时的默认值, -->  
 10         <!--必须跟命令行上的参数相同例如jar:jar,或者与某个阶段(phase)相同例如install、compile等 -->  
 11         <defaultgoal>install</defaultgoal>  
 12        
 13         <!--当filtering开关打开时,使用到的过滤器属性文件列表。 -->  
 14         <!--项目配置信息中诸如${spring.version}之类的占位符会被属性文件中的实际值替换掉 -->  
 15         <filters>  
 16             <filter>../filter.properties</filter>  
 17         </filters>  
 18        
 19         <!--项目相关的所有资源路径列表,例如和项目相关的配置文件、属性文件,这些资源被包含在最终的打包文件里。 -->  
 20         <resources>  
 21             <resource>  
 22        
 23                 <!--描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。 -->  
 24                 <!--举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven/messages。 -->  
 25                 <!--然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。 -->  
 26                 <targetpath>resources</targetpath>  
 27        
 28                 <!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。 -->  
 29                 <filtering>true</filtering>  
 30        
 31                 <!--描述存放资源的目录,该路径相对POM路径 -->  
 32                 <directory>src/main/resources</directory>  
 33        
 34                 <!--包含的模式列表 -->  
 35                 <includes>  
 36                     <include>**/*.properties</include>  
 37                     <include>**/*.xml</include>  
 38                 </includes>  
 39        
 40                 <!--排除的模式列表 如果<include>与<exclude>划定的范围存在冲突,以<exclude>为准 -->  
 41                 <excludes>  
 42                     <exclude>jdbc.properties</exclude>  
 43                 </excludes>  
 44        
 45             </resource>  
 46         </resources>  
 47        
 48         <!--单元测试相关的所有资源路径,配制方法与resources类似 -->  
 49         <testresources>  
 50             <testresource>  
 51                 <targetpath>  
 52                 <filtering>  
 53                 <directory>  
 54                 <includes>  
 55                 <excludes>  
 56             </excludes></includes></directory></filtering></targetpath></testresource>  
 57         </testresources>  
 58        
 59         <!--项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->  
 60         <sourcedirectory>${basedir}srcmainjava</sourcedirectory>  
 61        
 62         <!--项目脚本源码目录,该目录和源码目录不同, <!-- 绝大多数情况下,该目录下的内容会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)。 -->  
 63         <scriptsourcedirectory>${basedir}srcmainscripts  
 64         </scriptsourcedirectory>  
 65        
 66         <!--项目单元测试使用的源码目录,当测试项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->  
 67         <testsourcedirectory>${basedir}src	estjava</testsourcedirectory>  
 68        
 69         <!--被编译过的应用程序class文件存放的目录。 -->  
 70         <outputdirectory>${basedir}	argetclasses</outputdirectory>  
 71        
 72         <!--被编译过的测试class文件存放的目录。 -->  
 73         <testoutputdirectory>${basedir}	arget	est-classes  
 74         </testoutputdirectory>  
 75        
 76         <!--项目的一系列构建扩展,它们是一系列build过程中要使用的产品,会包含在running bulid‘s classpath里面。 -->  
 77         <!--他们可以开启extensions,也可以通过提供条件来激活plugins。 -->  
 78         <!--简单来讲,extensions是在build过程被激活的产品 -->  
 79         <extensions>  
 80        
 81             <!--例如,通常情况下,程序开发完成后部署到线上Linux服务器,可能需要经历打包、 -->  
 82             <!--将包文件传到服务器、SSH连上服务器、敲命令启动程序等一系列繁琐的步骤。 -->  
 83             <!--实际上这些步骤都可以通过Maven的一个插件 wagon-maven-plugin 来自动完成 -->  
 84             <!--下面的扩展插件wagon-ssh用于通过SSH的方式连接远程服务器, -->  
 85             <!--类似的还有支持ftp方式的wagon-ftp插件 -->  
 86             <extension>  
 87                 <groupid>org.apache.maven.wagon</groupid>  
 88                 <artifactid>wagon-ssh</artifactid>  
 89                 <version>2.8</version>  
 90             </extension>  
 91        
 92         </extensions>  
 93        
 94         <!--使用的插件列表 。 -->  
 95         <plugins>  
 96             <plugin>  
 97                 <groupid></groupid>  
 98                 <artifactid>maven-assembly-plugin</artifactid>  
 99                 <version>2.5.5</version>  
100        
101                 <!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。 -->  
102                 <executions>  
103                     <execution>  
104        
105                         <!--执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标 -->  
106                         <id>assembly</id>  
107        
108                         <!--绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段 -->  
109                         <phase>package</phase>  
110        
111                         <!--配置的执行目标 -->  
112                         <goals>  
113                             <goal>single</goal>  
114                         </goals>  
115        
116                         <!--配置是否被传播到子POM -->  
117                         <inherited>false</inherited>  
118        
119                     </execution>  
120                 </executions>  
121        
122                 <!--作为DOM对象的配置,配置项因插件而异 -->  
123                 <configuration>  
124                     <finalname>${finalName}</finalname>  
125                     <appendassemblyid>false</appendassemblyid>  
126                     <descriptor>assembly.xml</descriptor>  
127                 </configuration>  
128        
129                 <!--是否从该插件下载Maven扩展(例如打包和类型处理器), -->  
130                 <!--由于性能原因,只有在真需要下载时,该元素才被设置成true。 -->  
131                 <extensions>false</extensions>  
132        
133                 <!--项目引入插件所需要的额外依赖 -->  
134                 <dependencies>  
135                     <dependency>...</dependency>  
136                 </dependencies>  
137        
138                 <!--任何配置是否被传播到子项目 -->  
139                 <inherited>true</inherited>  
140        
141             </plugin>  
142         </plugins>  
143        
144         <!--主要定义插件的共同元素、扩展元素集合,类似于dependencyManagement, -->  
145         <!--所有继承于此项目的子项目都能使用。该插件配置项直到被引用时才会被解析或绑定到生命周期。 -->  
146         <!--给定插件的任何本地配置都会覆盖这里的配置 -->  
147         <pluginmanagement>  
148             <plugins>...</plugins>  
149         </pluginmanagement>  
150        
151     </build>

三、分发配置

 1 <!--项目分发信息,在执行mvn deploy后表示要发布的位置。 -->  
 2     <!--有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。 -->  
 3     <distributionmanagement>
 4         <!--部署项目产生的构件到远程仓库需要的信息 -->  
 5         <repository>  
 6        
 7             <!--是分配给快照一个唯一的版本号(由时间戳和构建流水号),还是每次都使用相同的版本号 -->  
 8             <!--参见repositories/repository元素 -->  
 9             <uniqueversion>true</uniqueversion>  
10        
11             <id> repo-id </id>  
12             <name> repo-name</name>  
13             <url>file://${basedir}/target/deploy </url>  
14             <layout>  
15        
16         </layout></repository>  
17        
18         <!--构件的快照部署到哪里,如果没有配置该元素,默认部署到repository元素配置的仓库 -->  
19         <snapshotrepository>  
20             <id></id>
21             <layout></layout>
22             <name></name>
23             <uniqueversion></uniqueversion> 
24             <url></url> 
25         </snapshotrepository>  
26        
27         <!--部署项目的网站需要的信息 -->  
28         <site>  
29        
30             <!--部署位置的唯一标识符,用来匹配站点和settings.xml文件里的配置 -->  
31             <id> site-id </id>  
32        
33             <!--部署位置的名称 -->  
34             <name> site-name</name>  
35        
36             <!--部署位置的URL,按protocol://hostname/path形式 -->  
37             <url>scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web </url>  
38        
39         </site>  
40        
41         <!--项目下载页面的URL。如果没有该元素,用户应该参考主页。 -->  
42         <!--使用该元素的原因是:帮助定位那些不在仓库里的构件(由于license限制)。 -->  
43         <downloadurl>  
44        
45         <!--如果构件有了新的groupID和artifact ID(构件移到了新的位置),这里列出构件的重定位信息。 -->  
46         <relocation>  
47    
48             <!--构件新的group ID -->  
49             <groupid>  
50        
51             <!--构件新的artifact ID -->  
52                
53        
54             <!--构件新的版本号 -->  
55             <version>  
56        
57             <!--显示给用户的,关于移动的额外信息,例如原因。 -->  
58             <message>  
59        
60             </message></version></artifactid></groupid></relocation>  
61    
62         <!--给出该构件在远程仓库的状态。不得在本地项目中设置该元素,因为这是工具自动更新的。 -->  
63         <!--有效的值有:none(默认),converted(仓库管理员从Maven 1 POM转换过来), -->  
64         <!--partner(直接从伙伴Maven 2仓库同步过来),deployed(从Maven 2实例部署),verified(被核实时正确的和最终的)。 -->  
65         <status>  
66          
67         </status>
68     </downloadurl>
69 </distributionmanagement>   

四、仓库配置

 1 <!--发现依赖和扩展的远程仓库列表。 -->
 2     <repositories>
 3         <!--包含需要连接到远程仓库的信息 -->
 4         <repository>
 5             <!--远程仓库唯一标识符。可以用来匹配在settings.xml文件里配置的远程仓库 -->
 6             <id></id>
 7             <!--远程仓库名称 --> 
 8             <name></name>
 9             <!--用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。 -->  
10             <!--Maven 2为其仓库提供了一个默认的布局; -->  
11             <!--然而,Maven1.x有一种不同的布局。 -->  
12             <!--我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。 -->  
13             <layout>default</layout>
14             <!--如何处理远程仓库里发布版本的下载 -->
15             <releases>
16                 <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
17                 <enabled></enabled>
18                 <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。 -->  
19                 <!--这里的选项是:always(一直),daily(默认,每日), -->  
20                 <!--interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->                
21                 <updatepolicy></updatepolicy>
22                 <!--当Maven验证构件校验文件失败时该怎么做: -->  
23                 <!--ignore(忽略),fail(失败),或者warn(警告)。 -->
24                 <checksumpolicy></checksumpolicy>
25             </releases>
26             <!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置, -->  
27             <!--POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。 -->  
28             <!--例如,可能有人会决定只为开发目的开启对快照版本下载的支持 -->  
29             <snapshots>
30                 <enabled></enabled>
31                 <updatepolicy></updatepolicy>
32                 <checksumpolicy></checksumpolicy>
33             </snapshots>
34             <!--远程仓库URL,按protocol://hostname/path形式 -->  
35             <url></url>
36         </repository>
37     </repositories>
38      
39     <!--发现插件的远程仓库列表,这些插件用于构建和报表 -->  
40     <pluginrepositories>
41         <!--包含需要连接到远程插件仓库的信息.参见repositories/repository元素 -->
42         <pluginrepository></pluginrepository>
43     </pluginrepositories>

五、profile配置

  1 <!--在列的项目构建profile,如果被激活,会修改构建处理 -->
  2     <profiles>
  3         <!--根据环境参数或命令行参数激活某个构建处理 -->
  4         <profile>
  5             <!--构建配置的唯一标识符。即用于命令行激活,也用于在继承时合并具有相同标识符的profile。 -->
  6             <id></id>
  7             <!--自动触发profile的条件逻辑。Activation是profile的开启钥匙。profile的力量来自于它 能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。activation元素并不是激活profile的唯一方式。 -->
  8              
  9                 <!--profile默认是否激活的标志 -->
 10                 <activebydefault>false</activebydefault>
 11                 <!--当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.41.4.0_2,而!1.4激活所有版本不是以1.4开头的JDK。 -->
 12                 <jdk>1.7</jdk>
 13                 <!--当匹配的操作系统属性被检测到,profile被激活。os元素可以定义一些操作系统相关的属性。 -->
 14                 <os>
 15                     <!--激活profile的操作系统的名字 -->
 16                     <name>Windows XP</name>
 17                     <!--激活profile的操作系统所属家族(如 'windows') -->
 18                     <family>Windows</family>
 19                     <!--激活profile的操作系统体系结构 -->
 20                     x86</arch>
 21                     <!--激活profile的操作系统版本 -->
 22                     <version>5.1.2600</version>
 23                 </os>
 24                 <!--如果Maven检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,Profile就会被激活。如果值 字段是空的,那么存在属性名称字段就会激活profile,否则按区分大小写方式匹配属性值字段 -->
 25                 <property>
 26                     <!--激活profile的属性的名称 -->
 27                     <name>mavenVersion</name>
 28                     <!--激活profile的属性的值 -->
 29                     <value>2.0.3</value>
 30                 </property>
 31                 <!--提供一个文件名,通过检测该文件的存在或不存在来激活profile。missing检查文件是否存在,如果不存在则激活 profile。另一方面,exists则会检查文件是否存在,如果存在则激活profile。 -->
 32                 <file>
 33                     <!--如果指定的文件存在,则激活profile。 -->
 34                     <exists>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/</exists>
 35                     <!--如果指定的文件不存在,则激活profile。 -->
 36                     <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/</missing>
 37                 </file>
 38             </activation>
 39             <!--构建项目所需要的信息。参见build元素 -->
 40             <build>
 41                 <defaultgoal>
 42                 <resources>
 43                     <resource>
 44                         <targetpath>
 45                         <filtering>
 46                         <directory>
 47                         <includes>
 48                         <excludes>
 49                     </excludes></includes></directory></filtering></targetpath></resource>
 50                 </resources>
 51                 <testresources>
 52                     <testresource>
 53                         <targetpath>
 54                         <filtering>
 55                         <directory>
 56                         <includes>
 57                         <excludes>
 58                     </excludes></includes></directory></filtering></targetpath></testresource>
 59                 </testresources>
 60                 <directory>
 61                 <finalname>
 62                 <filters>
 63                 <pluginmanagement>
 64                     <plugins>
 65                         <!--参见build/pluginManagement/plugins/plugin元素 -->
 66                         <plugin>
 67                             <groupid>
 68                              
 69                             <version>
 70                             <extensions>
 71                             <executions>
 72                                 <execution>
 73                                     <id>
 74                                     <phase>
 75                                     <goals>
 76                                     <inherited>
 77                                     <configuration>
 78                                 </configuration></inherited></goals></phase></id></execution>
 79                             </executions>
 80                             <dependencies>
 81                                 <!--参见dependencies/dependency元素 -->
 82                                 <dependency>
 83                                 </dependency>
 84                             </dependencies>
 85                             <goals>
 86                             <inherited>
 87                             <configuration>
 88                         </configuration></inherited></goals></extensions></version></artifactid></groupid></plugin>
 89                     </plugins>
 90                 </pluginmanagement>
 91                 <plugins>
 92                     <!--参见build/pluginManagement/plugins/plugin元素 -->
 93                     <plugin>
 94                         <groupid>
 95                          
 96                         <version>
 97                         <extensions>
 98                         <executions>
 99                             <execution>
100                                 <id>
101                                 <phase>
102                                 <goals>
103                                 <inherited>
104                                 <configuration>
105                             </configuration></inherited></goals></phase></id></execution>
106                         </executions>
107                         <dependencies>
108                             <!--参见dependencies/dependency元素 -->
109                             <dependency>
110                             </dependency>
111                         </dependencies>
112                         <goals>
113                         <inherited>
114                         <configuration>
115                     </configuration></inherited></goals></extensions></version></artifactid></groupid></plugin>
116                 </plugins>
117             </filters></finalname></directory></defaultgoal></build>
118             <!--模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径 -->
119             <modules>
120             <!--发现依赖和扩展的远程仓库列表。 -->
121             <repositories>
122                 <!--参见repositories/repository元素 -->
123                 <repository>
124                     <releases>
125                         <enabled>
126                         <updatepolicy>
127                         <checksumpolicy>
128                     </checksumpolicy></updatepolicy></enabled></releases>
129                     <snapshots>
130                         <enabled>
131                         <updatepolicy>
132                         <checksumpolicy>
133                     </checksumpolicy></updatepolicy></enabled></snapshots>
134                     <id>
135                     <name>
136                     <url>
137                     <layout>
138                 </layout></url></name></id></repository>
139             </repositories>
140             <!--发现插件的远程仓库列表,这些插件用于构建和报表 -->
141             <pluginrepositories>
142                 <!--包含需要连接到远程插件仓库的信息.参见repositories/repository元素 -->
143                 <pluginrepository>
144                     <releases>
145                         <enabled>
146                         <updatepolicy>
147                         <checksumpolicy>
148                     </checksumpolicy></updatepolicy></enabled></releases>
149                     <snapshots>
150                         <enabled>
151                         <updatepolicy>
152                         <checksumpolicy>
153                     </checksumpolicy></updatepolicy></enabled></snapshots>
154                     <id>
155                     <name>
156                     <url>
157                     <layout>
158                 </layout></url></name></id></pluginrepository>
159             </pluginrepositories>
160             <!--该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。要获取更多信息,请看项目依赖机制。 -->
161             <dependencies>
162                 <!--参见dependencies/dependency元素 -->
163                 <dependency>
164                 </dependency>
165             </dependencies>
166             <!--不赞成使用. 现在Maven忽略该元素. -->
167             <reports>
168             <!--该元素包括使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接。参见reporting元素 -->
169             <reporting>
170             </reporting>
171             <!--参见dependencyManagement元素 -->
172             <dependencymanagement>
173                 <dependencies>
174                     <!--参见dependencies/dependency元素 -->
175                     <dependency>
176                     </dependency>
177                 </dependencies>
178             </dependencymanagement>
179             <!--参见distributionManagement元素 -->
180             <distributionmanagement>
181             </distributionmanagement>
182             <!--参见properties元素 -->
183             <properties>
184         </properties></reports></modules></profile>
185     </profiles>

六、报表配置

 1 <!--描述使用报表插件产生报表的规范,特定的maven 插件能输出相应的定制和配置报表. -->  
 2     <!--当用户执行“mvn site”,这些报表就会运行,在页面导航栏能看到所有报表的链接。 -->  
 3     <reporting>  
 4        
 5         <!--true,则网站不包括默认的报表。这包括“项目信息”菜单中的报表。 -->  
 6         <excludedefaults>  
 7        
 8         <!--所有产生的报表存放到哪里。默认值是${project.build.directory}/site。 -->  
 9         <outputdirectory>  
10        
11         <!--使用的报表插件和他们的配置。 -->  
12         <plugins>  
13        
14             <plugin>  
15                 <groupid>  
16                    
17                 <version>  
18                 <inherited>  
19                 <configuration>  
20                     <links><link>http://java.sun.com/j2se/1.5.0/docs/api/  
21                        
22                 </links></configuration><links><links>  
23                 <!--一组报表的多重规范,每个规范可能有不同的配置。 -->  
24                 <!--一个规范(报表集)对应一个执行目标 。例如,有1,2345678,9个报表。 -->  
25                 <!--12,5构成A报表集,对应一个执行目标。25,8构成B报表集,对应另一个执行目标 -->  
26                 <reportsets>  
27        
28                     <!--表示报表的一个集合,以及产生该集合的配置 -->  
29                     <reportset>  
30        
31                         <!--报表集合的唯一标识符,POM继承时用到 -->  
32                         <id>sunlink</id>  
33        
34                         <!--产生报表集合时,被使用的报表的配置 -->  
35                         <configuration>  
36        
37                         <!--配置是否被继承到子POMs -->  
38                         <inherited>  
39        
40                         <!--这个集合里使用到哪些报表 -->  
41                         <reports>  
42                             <report>javadoc</report>  
43                         </reports>  
44        
45                     </inherited></configuration></reportset>  
46        
47                 </reportsets>  
48        
49             </links></links></inherited></version></artifactid></groupid></plugin><links><links><links>  
50        
51         </links></links></links></plugins><links><links><links><links>  
52        
53     </links></links></links></links></outputdirectory></excludedefaults></reporting>

七、环境配置

<!-- bug跟踪管理系统(Bugzilla,Jira,Scarab,Testtrack,Clearquest等)的名称和URL -->
    <issuemanagement>
        <!--问题管理系统(例如jira)的名字, -->  
        <system>jira</system>
        <!--该项目使用的问题管理系统的URL -->
        <url>http://jira.baidu.com/banseon</url>
    </issuemanagement>
     
    <!-- 项目的持续集成信息 -->
    <cimanagement>
        <!-- 持续集成系统的名字 -->
        <system>continuum</system>
        <!-- 该项目使用的持续集成系统的URL(如果持续集成系统有web接口的话) -->
        <url>http://xxx.xxx.xxx:8080/continuum</url>
        <!--构建完成时,需要通知的开发者/用户的配置项。包括被通知者信息和通知条件(错误,失败,成功,警告) -->
        <notifiers>
            <!--配置一种方式,当构建中断时,以该方式通知用户/开发者 -->  
            <notifier>
                <!-- 通知的方式 -->
                <type>mail</type>
                <!--发生错误时是否通知 -->
                <sendonerror>true</sendonerror>
                <!--构建失败时是否通知 -->
                <sendonfailure>false</sendonfailure>
                <!--构建成功时是否通知 -->
                <sendonsuccess>false</sendonsuccess>
                <!--发生警告时是否通知 -->
                <sendonwarning>false</sendonwarning>
                <!-- 不赞成使用,通知发送到的地址 -->
                 
                <!--扩展配置项 -->
                <configuration></configuration>
            </notifier>
        </notifiers>
    </cimanagement>

八、项目配置

  1 <!--项目相关邮件列表信息-->
  2     <mailinglists>
  3         <!-- 该元素描述了项目相关的所有邮件列表。自动产生的网站引用这些信息。 --> 
  4         <mailinglist>
  5             <!--邮件的名称-->
  6             <name>test</name>
  7             <!--发送邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建--> 
  8             <post>test@xxx.com</post>
  9             <!--你可以浏览邮件信息的URL-->
 10             http://xxx.xxx.com</archive>
 11             <!--其他你可以浏览邮件信息的URL-->
 12             <otherarchives>
 13                 <otherarchive>http://yyy.yyy.com</otherarchive>
 14             </otherarchives>
 15             <!--订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建-->
 16             <subscribe>test@xxx.com</subscribe>
 17             <!--取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建-->
 18             <unsubscribe>test@xxx.com</unsubscribe>
 19         </mailinglist>
 20     </mailinglists>
 21      
 22     <!--SCM(Source Control Management)标签允许你配置你的代码库,供Maven web站点和其它插件使用。 -->
 23     <scm>
 24         <!--SCM的URL,该URL描述了版本库和如何连接到版本库,该连接只读。 -->  
 25         <connection>scm:svn:http://xxx/svn/xxx</connection>
 26         <!--给开发者使用的,类似connection元素。即该连接不仅仅只读 -->
 27         <developerconnection>scm:svn:http://xxx/svn/xxx</developerconnection>
 28         <!--当前代码的标签,在开发阶段默认为HEAD -->  
 29         <tag>HEAD</tag>
 30         <!--指向项目的可浏览SCM库的URL。 --> 
 31         <url>http://xxx.xxx.com/banseon</url>
 32     </scm>
 33  
 34      
 35     <!--项目构建的前提:构建该项目或使用该插件所需要的Maven的最低版本-->
 36     <prerequisites>
 37         <maven>3.3.9</maven>
 38     </prerequisites>
 39  
 40  
 41     <!--项目开发者列表 -->  
 42     <developers>  
 43        
 44         <!--某个项目开发者的信息 -->  
 45         <developer>  
 46        
 47             <!--SCM里项目开发者的唯一标识符 -->  
 48             <id> HELLO WORLD </id>  
 49        
 50             <!--项目开发者的全名 -->  
 51             <name> banseon </name>  
 52        
 53             <!--项目开发者的email -->  
 54             <email> banseon@126.com</email>  
 55        
 56             <!--项目开发者的主页的URL -->  
 57             <url>  
 58        
 59             <!--项目开发者在项目中扮演的角色,角色元素描述了各种角色 -->  
 60             <roles>  
 61                 <role> Project Manager</role>  
 62                 <role>Architect </role>  
 63             </roles>  
 64        
 65             <!--项目开发者所属组织 -->  
 66             <organization> demo</organization>  
 67        
 68             <!--项目开发者所属组织的URL -->  
 69             <organizationurl>http://hi.clf.com/ </organizationurl>  
 70        
 71             <!--项目开发者属性,如即时消息如何处理等 -->  
 72             <properties>  
 73                 <dept> No </dept>  
 74             </properties>  
 75        
 76             <!--项目开发者所在时区, -11到12范围内的整数。 -->  
 77             <timezone> -5</timezone>  
 78        
 79         </url></developer>  
 80        
 81     </developers>
 82      
 83      
 84     <!--项目的其他贡献者列表 -->  
 85     <contributors>  
 86        
 87         <!-- 项目的其他贡献者。参见developers/developer元素 --> 
 88         <contributor> 
 89             <!-- 项目贡献者的全名 --> 
 90             <name></name>
 91  
 92             <!-- 项目贡献者的email -->
 93             <email></email>
 94  
 95             <!-- 项目贡献者的主页的URL -->
 96             <url></url>
 97  
 98             <!-- 项目贡献者所属组织 -->
 99             <organization></organization>
100  
101             <!-- 项目贡献者所属组织的URL -->
102             <organizationurl></organizationurl>
103  
104             <!-- 项目贡献者在项目中扮演的角色,角色元素描述了各种角色 --> 
105             <roles> 
106                 <role> Project Manager </role> 
107                 <role> Architect </role> 
108             </roles>
109  
110             <!-- 项目贡献者所在时区, -11到12范围内的整数。 --> 
111             <timezone></timezone>
112              
113             <!-- 项目贡献者属性,如即时消息如何处理等 --> 
114             <properties> 
115                 <dept> No </dept> 
116             </properties>  
117         </contributor> 
118        
119     </contributors>  
120      
121      
122     <!--该元素描述了项目所有License列表。应该只列出该项目的license列表,不要列出依赖项目的license列表。 -->  
123     <!--如果列出多个license,用户可以选择它们中的一个而不是接受所有license。 -->  
124     <licenses>  
125        
126         <!--描述了项目的license,用于生成项目的web站点的license页面,其他一些报表和validation也会用到该元素。 -->  
127         <license>  
128        
129             <!--license用于法律上的名称 -->  
130             <name> Apache 2 </name>  
131        
132             <!--官方的license正文页面的URL -->  
133             <url>http://www.clf.com/LICENSE-2.0.txt </url>  
134        
135             <!--项目分发的主要方式: repo,可以从Maven库下载 manual, 用户必须手动下载和安装依赖 -->  
136             <distribution> repo</distribution>  
137        
138             <!--关于license的补充信息 -->  
139             <comments> Abusiness-friendly OSS license </comments>  
140        
141         </license>  
142        
143     </licenses>  
144      
145      
146     <!--描述项目所属组织的各种属性。Maven产生的文档用 -->  
147     <organization>  
148        
149         <!--组织的全名 -->  
150         <name> demo </name>  
151        
152         <!--组织主页的URL -->  
153         <url> http://www.clf.com/</url>  
154        
155     </organization>
156          
157      
158     <!--项目的详细描述, Maven 产生的文档用。 当这个元素能够用HTML格式描述时 -->  
159     <!--(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标签),不鼓励使用纯文本描述。 -->  
160     <!-- 如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。 -->  
161     <description>A maven project to study maven. </description>
162      
163      
164     <!--项目主页的URL, Maven产生的文档用 -->  
165     <url>http://www.clf.com/ </url>  
166      
167      
168     <!--项目的名称, Maven产生的文档用 -->  
169     <name>banseon-maven </name>  
170      
171      
172     <!--项目创建年份,4位数字。当产生版权信息时需要使用这个值。 -->  
173     <inceptionyear>  
174      
175      
176     <!-- 依赖配置 -->
177     <!-- 继承配置,用于继承父项目 -->
178     <parent>
179         <!-- 父项目的构件标识符 -->
180         <groupid>com.aaa.bbb</groupid>
181         <!-- 父项目的唯一标识符 -->
182         <artifactid>bbb-parent</artifactid>
183         <!-- 父项目的版本 -->
184         <version>0.0.1-SNAPSHOT</version>
185         <!-- 
186             可选值
187             父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。
188             搜索顺序:
189             (1)Maven首先在构建当前项目的地方寻找父项目的pom,
190             (2)其次在文件系统的这个位置(relativePath位置),
191             (3)然后在本地仓库,最后在远程仓库寻找父项目的pom。 -->
192         <relativepath></relativepath>
193     </parent>
194      
195      
196     <!-- 聚合配置 -->
197     <!-- 对于多模块的project,可以通过modules在父类中聚合统一管理,modules的顺序是不重要的,因为maven会自动根据依赖关系来拓扑排序 -->
198     <modules>
199         <module>bbb-ddd</module>
200         <module>bbb-eee</module>
201         <module>bbb-fff</module>
202         <module>bbb-ggg</module>
203     </modules>
204      
205      
206     <!-- 
207         是用于帮助管理chidren的dependencies的。
208         例如如果parent使用dependencyManagement定义了一个dependencyon junit:junit4.0,
209         那么 它的children就可以只引用 groupId和artifactId,
210         而version就可以通过parent来设置,这样的好处就是可以集中管理 依赖的详情。
211          
212         示例:
213         父项目:
214             <dependencyManagement>
215                 <dependencies>
216                     <dependency>
217                         <groupId>junit</groupId>
218                         <artifactid>junit</artifactId>
219                         <version>4.12</version>
220                         <scope>test</scope>
221                     </dependency>
222                 </dependencies>
223             </dependencyManagement>
224          
225         子项目:
226             <dependency>
227                 <groupId>junit</groupId>
228                 <artifactid>junit</artifactId>
229             </dependency>
230      -->
231     <dependencymanagement>
232         <dependencies>
233             <dependency>
234                 <!-- 配置信息查看dependencies下的配置详情 -->
235             </dependency>
236         </dependencies>
237     </dependencymanagement>
238      
239      
240     <!-- 不赞成使用. 现在Maven忽略该元素. -->
241     <reports></reports></inceptionyear>
原文地址:https://www.cnblogs.com/rana4504/p/12190826.html