Maven 实战 05 聚合与继承

2015/06/04 17:27
阅读数 25
聚合:一条命令构建多个模块
 <project>
        <modelVersion>4.0.0</modelVersion>        
        <groupId>com.jubenxu.mvnbook.account</groupId>
        <artifactId>account-aggregator</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <!-- packaging为POM类型 -->
          <packaging>pom</packaging>
        <name>Account Aggregator</name>
          <modules>
            <!-- 每个module的值都是一个当前POM的相对目录 -->
            <module>../account-email</module>
            <module>../account-persist</module>
            <!-- 将父模块加入到聚合中 -->
            <module>../account-parent</module>
          </modules>

    </project>

继承:简化配置
父模块
    <project>
        <modelVersion>4.0.0</modelVersion>

        <groupId>com.juvenxu.mvnbook.account</groupId>
        <artifactId>account-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <!-- packaging为POM类型 -->
        <packaging>pom</packaging>

        <name>account-parent</name>

        <properties>
            <springframework.version>2.5.6</springframework.version>
            <junit.version>4.10</junit.version>
        </properties>
        <!-- 依赖管理 不会引入任何依赖 -->
        < dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                    <version>${springframework.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-beans</artifactId>
                    <version>${springframework.version}</version>
                </dependency>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>${junit.version}</version>
                </dependency>
            </dependencies>
        </dependencyManagement>

        <build>
            <!-- 插件管理 不会引入插件 -->
            < pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>2.1.1</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>2.3.2</version>
                        <configuration>
                            <source>1.5</source>
                            <target>1.5</target>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-resources-plugin</artifactId>
                        <version>2.5</version>
                        <configuration>
                            <encoding>UTF-8</encoding>
                        </configuration>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </project>

 子模块
    <project>
        <modelVersion>4.0.0</modelVersion>
          <!-- 指定父模块 -->
         <parent>
            <groupId>com.juvenxu.mvnbook.account</groupId>
            <artifactId>account-parent</artifactId>
            <version>0.0.1-SNAPSHOT</version>
              <!-- 父模块POM的相对路径 -->
              <relativePath>../account-parent/pom.xml</relativePath>
         </parent>

        <artifactId>account-email</artifactId>
        <name>account-email</name>

        <properties>
            <project.build.sourceEncoding>
                UTF-8
            </project.build.sourceEncoding>
        </properties>

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </dependency>
        </dependencies>

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>

     <parent>的子元素的<relativePath>表示父模块POM的相对路径

默认情况,在聚会POM处运行 mvn clean install 会构建所有模块,有时只想构建某几个模块可以:
mvn clean install -pl ../account-email


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部