参考http://maven.apache.org/pom.html
Introduction
- POM : Project Object Model
top elements
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- The Basics -->
<groupId/>
<artifactId/>
<version/>
<!-- value: pom, jar, maven-plugin, ejb, war, ear, rar, par; default: jar -->
<packaging/>
<dependencies/>
<parent/>
<dependencyManagement/>
<modules/>
<properties/>
<!-- Build Settings -->
<build/>
<reporting/>
<!-- More Project Information -->
<name/>
<description/>
<url/>
<inceptionYear/>
<licenses/>
<organization/>
<developers/>
<contributors/>
<!-- Environment Settings -->
<issueManagement/>
<ciManagement/>
<mailingLists/>
<scm/>
<prerequisites/>
<repositories/>
<pluginRepositories/>
<distributionManagement/>
<profiles/>
</project>
POM Relationships
1. Dependencies
- scope
- compile: default, available in all classpaths. propagated(传播)
- provided: available on the compilation and test classpath,not propagated
- runtime: in the runtime and test classpaths, but not the compile classpath.
- test: in the test compilation and execution phases.
- system: like provided
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<type>jar</type>
<scope>test</scope>
<optional>true</optional>
<!-- 区分jdk1.5,jdk1.4等 -->
<classifier/>
<systemPath/>
<exclusions/>
</dependency>
</dependencies>
2. Inheritance
- 大部分元素都可以继承,除了一下几个:
- artifactId
- name
- prerequisites
- Super POM,所有pom的父对象。类似java.lang.Object
<!-- 可以使用 mvn help:effective-pom 可以对比源pom.xml来验证 -->
<project>
<modelVersion>4.0.0</modelVersion>
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
<build>
<directory>${project.basedir}/target</directory>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
<testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
<pluginManagement>
<!-- NOTE: These plugins will be removed from future versions of the super POM -->
<!-- They are kept for the moment as they are very unlikely to conflict with lifecycle mappings (MNG-4453) -->
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<outputDirectory>${project.build.directory}/site</outputDirectory>
</reporting>
<profiles>
<!-- NOTE: The release profile will be removed from future versions of the super POM -->
<profile>
<id>release-profile</id>
<activation>
<property>
<name>performRelease</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<inherited>true</inherited>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<inherited>true</inherited>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<inherited>true</inherited>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<updateReleaseInfo>true</updateReleaseInfo>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
3. Aggregation (聚合)
<modules>
<module>my-project</module>
<module>another-project</module>
</modules>
Properties
等同: http://blog.youkuaiyun.com/tmriver/article/details/78839236#Properties
Build
otter,mq打包,
http://www.cnblogs.com/yangxia-test/category/675579.html