6.2. simple-parent 项目

一个多模块项目通过一个父POM引用一个或多个子模块来定义。在simple-parent/目录中你能找到一个父POM(也称为顶层POM)为simple-parent/pom.xml

Example 6.1. simple-parent 项目的 POM

<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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.sonatype.mavenbook.ch06</groupId>
  <artifactId>simple-parent</artifactId>
  <packaging>pom</packaging>
  <version>1.0</version>
  <name>Chapter 6 Simple Parent Project</name>
 
  <modules>
    <module>simple-weather</module>
    <module>simple-webapp</module>
  </modules>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>1.5</source>
            <target>1.5</target>
          </configuration>
        </plugin>
      </plugins>
   </pluginManagement> 
  </build>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>


注意simple-parent定义了一组Maven坐标:groupIdorg.sonatype.mavenbookartifactIdsimple-parentversion1.0。这个父项目不像之前的项目那样创建一个JAR或者一个WAR,它仅仅是一个引用其它Maven项目的POM。像simple-parent这样仅仅提供项目对象模型的项目,正确的的打包类型是pompom.xml中下一部分列出了项目的子模块。这些模块在modules元素中定义,每个modules元素对应了一个simple-parent/目录下的子目录。Maven知道去这些子目录寻找pom.xml文件,并且,在构建的simp-parent的时候,它会将这些子模块包含到要构建的项目中。

最后,我们定义了一些将会被所有子模块继承的设置。simple-parent的build部分配置了所有Java编译的目标是Java 5 JVM。因为compiler插件默认绑定到了生命周期,我们就可以使用pluginManagement部分来配置。我们将会在后面的章节详细讨论pluginManagement,区分为默认的插件提供配置和真正的绑定插件是很容易的。dependencies元素将JUnit 3.8.1添加为一个全局的依赖。build配置和dependencies都会被所有的子模块继承。使用POM继承允许你添加一些全局的依赖如JUnit和Log4J。