maven--pom.xml详解

来源:互联网 发布:ai软件下载中文版 mac 编辑:程序博客网 时间:2024/06/05 20:14

参考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
    1. compile: default, available in all classpaths. propagated(传播)
    2. provided: available on the compilation and test classpath,not propagated
    3. runtime: in the runtime and test classpaths, but not the compile classpath.
    4. test: in the test compilation and execution phases.
    5. 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

  • 大部分元素都可以继承,除了一下几个:
    1. artifactId
    2. name
    3. 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.csdn.net/tmriver/article/details/78839236#Properties

Build

otter,mq打包,
http://www.cnblogs.com/yangxia-test/category/675579.html

Reporting