`
阅读更多

 

see:

http://maven.apache.org/guides/

http://www.blogjava.net/zyl/archive/2006/12/30/91055.html

 

---------------

顶级标签和注释

 

 

<?xml version="1.0"?>

 

 

【xml】

xml文件的经典头部标识,指定版本和代码页

 

 

<!--
-->

 

 

【comment】

注释,可放在任意位置(但不可嵌套)

以说明xml的作用或屏蔽功能

 

 

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
</project>

 

【project】

工程标签,pom.xml的顶级标签

 

---------------

project二级标签

 

 

<parent>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts-master</artifactId>
  <version>4</version>
</parent>

 

【project/parent】

向父目录查找pom.xml,如果找不到会导致Cannot find parent编译错误。

似乎不搜索二级以上的父pom.xml。

 

 

<modelVersion>4.0.0</modelVersion>

 

【project/modelVersion】

对应project xmlns和xsi:schemaLocation,表示pom.xml格式的版本

 

 

<groupId>org.apache.struts</groupId>

 

【project/groupId】

这个pom的唯一标识符的名字空间

 

 

<artifactId>struts-parent</artifactId>

 

【project/artifactId】

这个pom的唯一标识符

 

 

<version>1.3.10</version>

 

【project/version】

子项目的具体版本,父级不需要给出

 

 

<packaging>pom</packaging>
<packaging>war</packaging>

 

【project/packaging】

最终生成物类型,父级用pom即可

 

 

<name>Struts</name>

 

【project/name】

名称(可以带空格)

 

 

<url>http://struts.apache.org/</url>

 

【project/url】

网址(一般父级用)

 

<description>Apache Struts</description>

 

【project/description】

描述(一般父级用)

 

 

<inceptionYear>2000</inceptionYear>

     

    【project/inceptionYear】

成立年份(一般父级用)

 

 

<scm>
   <connection>scm:svn:http://svn.apache.org/repos/asf/struts/struts1/branches/STRUTS_1_3_BRANCH</connection>
   <developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/struts1/branches/STRUTS_1_3_BRANCH</developerConnection>
   <url>http://svn.apache.org/viewcvs.cgi/struts/struts1/struts1/branches/STRUTS_1_3_BRANCH</url>
</scm>

 

 

    【project/scm】

当前工程目录的几个代码版本控制url,基本相同,除了协议名

 

 

<ciManagement/>

 

 

【project/ciManagement】

持续集成管理(一般父级用,可无视)

 

 

<distributionManagement>
	<site>
		<id>apache-site</id>
		<url>scp://people.apache.org/www/struts.apache.org/1.x/</url>
	</site>
</distributionManagement>

 

 

    【project/distributionManagement】

产品分发信息(一般父级用,可无视)  

 

 

<organization>
	<name>Apache Software Foundation</name>
	<url>http://www.apache.org/</url>
</organization>

 

 

【project/organization】

制作组织的信息(一般父级用,可无视)  

 

--------------------

 

project二级复数标签

 

 

<profiles>
	<profile>
		<id>apps</id>
		<activation>
			<property>
				<name>apps</name>
			</property>
		</activation>
		<modules>
			<module>apps</module>
		</modules>
	</profile>
	<profile>
		<id>itest</id>
		<activation>
			<property>
				<name>itest</name>
			</property>
		</activation>
		<modules>
			<module>integration</module>
		</modules>
	</profile>
	<profile>
		<id>assembly</id>
		<activation>
			<property>
				<name>assembly</name>
			</property>
		</activation>
		<modules>
			<module>assembly</module>
		</modules>
	</profile>
	<profile>
		<id>release</id>
		<activation>
			<property>
				<name>release</name>
			</property>
		</activation>
		<build>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-gpg-plugin</artifactId>
					<executions>
						<execution>
							<id>sign-artifacts</id>
							<phase>verify</phase>
							<goals>
								<goal>sign</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</build>
	</profile>
</profiles>

 

 

【project/profiles】

类似settings.xml的参数设置

 

 

<modules>
	<module>core</module>
	<module>el</module>
	<module>extras</module>
	<module>faces</module>
	<module>mailreader-dao</module>
	<module>scripting</module>
	<module>taglib</module>
	<module>tiles</module>
</modules>

 

 

【project/modules】

指定子目录,以获取子级的pom.xml(一般父级用)

 

 

<licenses>
	<license>
		<name>The Apache Software License, Version 2.0</name>
		<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
		<distribution>repo</distribution>
		<comments/>
	</license>
</licenses>

 

 

【project/licenses】

许可证(一般父级用,可无视)

 

 

<dependencies/>

<dependencies>
  <dependency>
	 <groupId>${pom.groupId}</groupId>
	 <artifactId>struts-taglib</artifactId>
	 <version>${pom.version}</version>
  </dependency>
  <dependency>
	 <groupId>${pom.groupId}</groupId>
	 <artifactId>struts-tiles</artifactId>
	 <version>${pom.version}</version>
  </dependency>
  <dependency>
	 <groupId>javax.servlet</groupId>
	 <artifactId>servlet-api</artifactId>
	 <version>2.3</version>
	 <scope>provided</scope>
  </dependency>
</dependencies>

 

 

【project/dependencies】

依赖,用于导入外部库或内部库到classpath。

父级pom.xml一般把dependencies写成空标签

scope默认是compile表示编译期需要

scope是provided表示编译期不需要,但运行期的JDK或容器需要把它放进classpath

scope是runtime表示编译期不需要但运行期需要

scope是test表示编译期和运行期都不需要,但测试期需要

可用于依赖平行目录的其它子工程,写法见上。

 

 

<repositories>
	<repository>
		<id>apache.snapshots</id>
		<name>Apache Maven Repository (Snapshots and Test Builds)</name>
		<url>http://people.apache.org/maven-snapshot-repository</url>
		<releases><enabled>false</enabled></releases>
		<snapshots><enabled>true</enabled></snapshots>
	</repository>
</repositories>

 

 

【project/repositories】

设置远程或本地仓库,在线下载库和Maven插件。(一般父级用)

用内部局域网的Maven仓库可以提高构建速度。

全局的仓库设置在settings.xml

默认是使用maven的中央仓库,

但有时会因为库的版本不够新导致构建失败,所以需要额外指定

see

http://maven.apache.org/guides/introduction/introduction-to-repositories.html

 

-----------------------

 

project二级大标签<build></build>

 

 

<finalName>${pom.artifactId}</finalName>

 

 

【project/build/finalName】

编译的最终名称。(一般用于子级pom.xml)

 

 

<resources>
	<!-- Include resources under src/main/java in WEB-INF/classes -->
	<resource>
		<directory>src/main/java</directory>
		<includes>
			<include>**/*.properties</include>
			<include>**/*.xml</include>
		</includes>
	</resource>
</resources>

 

 

【project/build/resources】

jar/war打包时的资源过滤和复制(默认maven过滤掉所有class文件以外的文件)

可以使用通配符。

 

 

<pluginManagement>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>2.0.2</version>
			<configuration>
				<source>1.4</source>
				<target>1.4</target>
			</configuration>
		</plugin>
		<plugin>
			<artifactId>maven-javadoc-plugin</artifactId>
			<version>2.5</version>
		</plugin>
		<plugin>
			<artifactId>maven-site-plugin</artifactId>
			<version>2.0-beta-7</version>
		</plugin>
		<plugin>
			<artifactId>maven-source-plugin</artifactId>
			<version>2.0.4</version>
		</plugin>
		<plugin>
			<artifactId>maven-jar-plugin</artifactId>
			<version>2.2</version>
			<configuration>
				<archive>
					<manifest>
						<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
						<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
					</manifest>
				</archive>
			</configuration>
		</plugin>
		<plugin>
			<groupId>net.sf.dtddoc</groupId>
			<artifactId>dtddoc-maven-plugin</artifactId>
			<version>1.1</version>
		</plugin>
		<plugin>
			<groupId>net.sourceforge.maven-taglib</groupId>
			<artifactId>maven-taglib-plugin</artifactId>
			<version>2.3.1</version>
			<configuration>
			  <parseHtml>true</parseHtml>
			</configuration>
		</plugin>
	</plugins>
</pluginManagement>

 

 

【project/build/pluginManagement】

构建管理插件(通常是maven的系统插件)

(一般父级用)

 

 

<plugins>

	<!-- 用于dtd文件的复制-->

	<plugin>
	   <groupId>org.apache.maven.plugins</groupId>
	   <artifactId>maven-antrun-plugin</artifactId>
	   <inherited>false</inherited>
	   <version>1.3</version>
	   <executions>
		  <execution>
			 <id>copy-dtds</id>
			 <phase>site</phase>
			 <configuration>
				<tasks>
				   <copy todir="${project.build.directory}/site/dtds"
						 failonerror="false">
					  <fileset dir="${basedir}/core/src/main/resources/org/apache/struts/resources"/>
					  <fileset dir="${basedir}/tiles/src/main/resources/org/apache/struts/resources"/>
				   </copy>
				</tasks>
			 </configuration>
			 <goals>
				<goal>run</goal>
			 </goals>
		  </execution>
	   </executions>
	</plugin>
	
	<!-- 用于tomcat的插件配置-->
	
	<plugin>
		<groupId>org.codehaus.cargo</groupId>
		<artifactId>cargo-maven2-plugin</artifactId>
		<version>0.3.1</version>
		<configuration>
		   <container>
			  <containerId>tomcat5x</containerId>
			  <home>${cargo.tomcat5x.home}</home>
			  <log>${project.build.directory}/tomcat5x.log</log>
			  <output>${project.build.directory}/tomcat5x.out</output>
		   </container>
		   <configuration>
			  <home>${project.build.directory}/tomcat5x</home>
		   </configuration>
		</configuration>
	</plugin>
	
	<!--用于web应用的插件配置-->

	<!-- Include source code under WEB-INF/src/java -->
	<plugin>
		<artifactId>maven-antrun-plugin</artifactId>
		<version>1.1</version>
		<executions>
		   <execution>
			  <id>copy-sources</id>
			  <phase>process-sources</phase>
			  <configuration>
				 <tasks>
					<copy todir="${project.build.directory}/${pom.artifactId}/WEB-INF/src/java"
						  failonerror="false">
					   <fileset dir="${basedir}/src/main/java"/>
					</copy>
				 </tasks>
			  </configuration>
			  <goals>
				 <goal>run</goal>
			  </goals>
		   </execution>
		</executions>
	</plugin>
	
</plugins>

 

 

【project/build/plugins】

构建插件参数(一般父级用)

 

 

<defaultGoal>install</defaultGoal>

 

 

【project/build/defaultGoal】

默认的mvn目标名(一般父级用)

 

--------------------

 

project二级大标签reporting

 

 

<reporting>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-project-info-reports-plugin</artifactId>
			<version>2.1</version>
		 </plugin>
		<plugin>
			<artifactId>maven-javadoc-plugin</artifactId>
			<version>2.5</version>
			<configuration>
			  <links>
				<link>http://commons.apache.org/beanutils/apidocs/</link>
				<link>http://commons.apache.org/logging/commons-logging-1.0.4/docs/apidocs/</link>
				<link>http://commons.apache.org/validator/api-1.3.1/</link>
				<link>http://java.sun.com/j2se/1.4.2/docs/api/</link>
				<link>http://java.sun.com/j2ee/1.4/docs/api/</link>
			  </links>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-surefire-report-plugin</artifactId>
			<version>2.4.3</version>
		</plugin>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-checkstyle-plugin</artifactId>
			<version>2.2</version>
			<configuration>
			  <configLocation>http://svn.apache.org/repos/asf/struts/maven/trunk/build/struts_checks.xml</configLocation>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-jxr-plugin</artifactId>
			<version>2.1</version>
		</plugin>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-pmd-plugin</artifactId>
			<version>2.4</version>
		</plugin>
		<plugin>
			<groupId>net.sf.dtddoc</groupId>
			<artifactId>dtddoc-maven-plugin</artifactId>
			<version>1.1</version>
			<configuration>
				<excludes>
					<exclude>**/web-app*</exclude>
				</excludes>
			</configuration>
		</plugin>
	</plugins>
</reporting>

 

 

【project/reporting】

用于文档化、网站化、代码检查的报告插件配置参数(一般父级用)

see:

http://maven.apache.org/ref/2.0.11/maven-reporting/index.html

 

分享到:
评论

相关推荐

    超级POM_POM文件总体配置说明.pdf

    《超级POM与POM文件总体配置详解》 在Maven的世界里,POM(Project Object Model)是项目的核心,它是Maven理解并管理项目的基石。POM.xml文件是Maven项目的配置文件,包含了项目的元数据,如项目依赖、构建过程、...

    海洋模式POM,海洋模式POM,海洋模式POM

    普林斯顿大学海洋模式,pom 源代码 海洋模式POM,海洋模式POM,海洋模式POM

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

    史上最全的Maven的Pom.xml文件详解 Maven是Java领域最流行的构建工具之一,其核心配置文件是Pom.xml。在Pom.xml文件中,我们可以定义项目的基本信息、依赖关系、构建过程、测试环境等。下面,我们将详细解析Pom.xml...

    根据pom.xml下载依赖

    当我们说“根据pom.xml下载依赖”,实际上是在指Maven如何通过解析项目中的pom.xml文件来获取并安装项目的依赖库。 pom.xml文件通常位于项目的根目录下,它定义了项目的基本属性,如项目名称、版本、打包类型(如...

    关于POM材料介绍

    ### 关于POM材料介绍的知识点 #### 一、POM材料概述 - **定义**:POM(Polyoxymethylene),中文名为聚甲醛,是一种综合性能优良的工程塑料,具有良好的机械性能、电性能、耐磨性和自润滑性等特点。 - **分类**:...

    gradle-4.1.1.pom

    gradle-4.1.1.pom

    maven配置文件pom

    pom.xml配置文件,包含数据库,仓库地址配置等等

    SpringjavaWeb项目POM文件

    SpringjavaWeb项目POM文件SpringjavaWeb项目POM文件SpringjavaWeb项目POM文件

    swagger的使用pom文件旧版与新版的pom文件,

    POM(Project Object Model)文件是Maven项目的核心配置文件,用于管理项目的依赖、构建过程和其他元数据。在Swagger的使用中,POM文件包含了Swagger2的依赖信息,使得我们可以在项目中引入所需版本的Swagger库。 ...

    批量修改pom 的版本依赖

    `批量修改pom.xml的版本依赖`就是针对这个问题的一种解决方案,它旨在提高开发效率并确保整个项目的一致性。POM(Project Object Model)是Maven项目的核心配置文件,用于定义项目构建、依赖管理和插件配置等信息。...

    jar包转pom

    在界面输入jar包路径,将会自动转化为pom.txt,之后再手动改名为pom.xml即可

    Maven项目中pom文件全面讲解

    全面讲解Pom文件,全面讲解Pom文件,全面讲解Pom文件,全面讲解Pom文件,全面讲解Pom文件 全面讲解Pom文件,全面讲解Pom文件,全面讲解Pom文件,全面讲解Pom文件,全面讲解Pom文件

    pom_并行程序fortran_海洋模式POM_pom海洋_POM_POM海洋模式_

    普林斯顿海洋模式(POM,Princeton Ocean Model)是一种广泛应用的海洋环流模型,用于研究全球和区域尺度的海洋动力学和热力学过程。它采用有限差分方法对海洋方程组进行离散化,可以模拟海洋的温度、盐度、流速等...

    idea中pom.xml文件

    idea中pom.xml文件

    父级pom文件案例上传

    pom文件,如其中有不需要的jar包,可以自行删除,可能没有什么用,

    m2eclipse包含pom editor

    “pom editor”是指POM编辑器,它是m2eclipse插件的一部分,专门用来编辑和管理Maven项目的pom.xml文件。pom.xml是Maven项目的核心配置文件,包含了项目信息、构建指令、依赖管理、插件配置等重要信息。POM编辑器...

    maven项目pom.xml中parent标签的使用.docx

    "Maven 项目 pom.xml 中 parent 标签的使用" Maven 项目 pom.xml 文件中的 parent 标签是 Maven 项目管理依赖的核心组件之一。parent 标签的使用可以简化项目间的依赖管理,使得项目结构更加清晰、易于维护。 ...

    基于Java的POM.XML

    基于Java的POM.XML,如果用兴趣,可以下载下去参考一下

    jar包文件名转pom依赖工具

    当我们从互联网上下载一个jar包时,往往没有对应的POM文件,这在构建Maven项目时可能会造成困扰,因为Maven需要POM来理解如何管理和构建依赖。 "jar包文件名转pom依赖工具"就是为了解决这个问题而存在的。这个工具...

    基于POM的开源项目Facebook-oss-pom.zip

    Facebook-oss-pom 是一个基于 POM 的部署在 oss.sonatype.org 上的facebook 上开源项目。它可以任随意调用任何基于 POM 的新项目而不用进行二次编辑修改。Facebook OSS POM 平台致力于通过 Maven 的中央资源库来建立...

Global site tag (gtag.js) - Google Analytics