Maven实战(七)—— Maven的超级POM

先来看一下这个超级pom.xml的定义:

<project>

  <modelVersion>4.0.0</modelVersion>

  <name>Maven Default Project</name>

 

  <repositories>

    <repository>

      <id>central</id>

      <name>Maven Repository Switchboard</name>

      <layout>default</layout>

      <url>http://repo1.maven.org/maven2</url>

      <snapshots>

        <enabled>false</enabled>

      </snapshots>

    </repository>

  </repositories>

 

  <pluginRepositories>

    <pluginRepository>

      <id>central</id>

      <name>Maven Plugin Repository</name>

      <url>http://repo1.maven.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>

    <!-- TODO: MNG-3731 maven-plugin-tools-api < 2.4.4 expect this to be relative... -->

    <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>

       <plugins>

         <plugin>

           <artifactId>maven-antrun-plugin</artifactId>

           <version>1.3</version>

         </plugin>      

         <plugin>

           <artifactId>maven-assembly-plugin</artifactId>

           <version>2.2-beta-2</version>

         </plugin>        

         <plugin>

           <artifactId>maven-clean-plugin</artifactId>

           <version>2.2</version>

         </plugin>

         <plugin>

           <artifactId>maven-compiler-plugin</artifactId>

           <version>2.0.2</version>

         </plugin>

         <plugin>

           <artifactId>maven-dependency-plugin</artifactId>

           <version>2.0</version>

         </plugin>

         <plugin>

           <artifactId>maven-deploy-plugin</artifactId>

           <version>2.4</version>

         </plugin>

         <plugin>

           <artifactId>maven-ear-plugin</artifactId>

           <version>2.3.1</version>

         </plugin>

         <plugin>

           <artifactId>maven-ejb-plugin</artifactId>

           <version>2.1</version>

         </plugin>

         <plugin>

           <artifactId>maven-install-plugin</artifactId>

           <version>2.2</version>

         </plugin>

         <plugin>

           <artifactId>maven-jar-plugin</artifactId>

           <version>2.2</version>

         </plugin>

         <plugin>

           <artifactId>maven-javadoc-plugin</artifactId>

           <version>2.5</version>

         </plugin>

         <plugin>

           <artifactId>maven-plugin-plugin</artifactId>

           <version>2.4.3</version>

         </plugin>

         <plugin>

           <artifactId>maven-rar-plugin</artifactId>

           <version>2.2</version>

         </plugin>       

         <plugin>               

           <artifactId>maven-release-plugin</artifactId>

           <version>2.0-beta-8</version>

         </plugin>

         <plugin>                

           <artifactId>maven-resources-plugin</artifactId>

           <version>2.3</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-surefire-plugin</artifactId>

            <version>2.4.3</version>

         </plugin>

         <plugin>

           <artifactId>maven-war-plugin</artifactId>

           <version>2.1-alpha-2</version>

         </plugin>

       </plugins>

     </pluginManagement>

  </build>

 

  <reporting>

    <outputDirectory>${project.build.directory}/site</outputDirectory>

  </reporting>

  <profiles>

    <profile>

      <id>release-profile</id>

 

      <activation>

        <property>

          <name>performRelease</name>

          <value>true</value>

        </property>

      </activation>

 

      <build>

        <plugins>

          <plugin>

            <inherited>true</inherited>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-source-plugin</artifactId>

            <executions>

              <execution>

                <id>attach-sources</id>

                <goals>

                  <goal>jar</goal>

                </goals>

              </execution>

            </executions>

          </plugin>

          <plugin>

            <inherited>true</inherited>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-javadoc-plugin</artifactId>

            <executions>

              <execution>

                <id>attach-javadocs</id>

                <goals>

                  <goal>jar</goal>

                </goals>

              </execution>

            </executions>

          </plugin>

          <plugin>

            <inherited>true</inherited>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-deploy-plugin</artifactId>

            <configuration>

              <updateReleaseInfo>true</updateReleaseInfo>

            </configuration>

          </plugin>

        </plugins>

      </build>

    </profile>

  </profiles>

 

 

</project>

 

pom.xml会完全继承父pom.xml中所有的元素,而且对于相同的元素,一般子pom.xml中的会覆盖父pom.xml中的元素,但是有几个特殊的元素它们会进行合并而不是覆盖。这些特殊的元素是:

Ø  dependencies

Ø  developers

Ø  contributors

Ø  plugin列表,包括plugin下面的reports

Ø  resources

你可能感兴趣的:(maven)