2025-05-23

1.  繼承
之前我們學習Maven的聚合機制遺留個問題,就是多個模塊的pom.xml文件的內容出現瞭冗餘、重復的內容,解決這個問題其實使用Maven的繼承機制即可,就像Java的繼承一樣,父類就像一個模板,子類繼承自父類,那麼有些通用的方法、變量都不必在子類中再重復聲明瞭,具體Java繼承在內存中的表現形式可以參考
http://suhuanzheng7784877.iteye.com/blog/1000635
和http://suhuanzheng7784877.iteye.com/blog/1000700中的部分內容。Maven的繼承機制類似,在一個父級別的Maven的pom文件中定義瞭相關的常量、依賴、插件等等配置後,實際項目模塊可以繼承此父項目的pom文件,重復的項不必顯示的再聲明一遍瞭,相當於父Maven項目就是個模板,等著其他子模塊去繼承。不過父Maven項目要高度抽象,高度提取公共的部分(交集)。筆者使用瞭先前的聚合項目模塊做的父模板pom,實際上很多機構也是這麼實施的。
Java代碼 
<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>com.liuyan.account</groupId> 
    <artifactId>MavenAccount-aggregator</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 
 
    <properties> 
        <springversion>2.5.6</springversion> 
        <junitversion>2.5.6</junitversion> 
    </properties> 
 
    <dependencies> 
        <dependency> 
            <groupId>org.springframework</groupId> 
            <artifactId>spring-core</artifactId> 
            <version>${springversion}</version> 
        </dependency> 
        <dependency> 
            <groupId>org.springframework</groupId> 
            <artifactId>spring-beans</artifactId> 
            <version>${springversion}</version> 
        </dependency> 
        <dependency> 
            <groupId>org.springframework</groupId> 
            <artifactId>spring-context</artifactId> 
            <version>${springversion}</version> 
        </dependency> 
        <dependency> 
            <groupId>org.springframework</groupId> 
            <artifactId>spring-context-support</artifactId> 
            <version>${springversion}</version> 
        </dependency> 
        <dependency> 
            <groupId>javax.mail</groupId> 
            <artifactId>mail</artifactId> 
            <version>1.4.1</version> 
        </dependency> 
        <dependency> 
            <groupId>junit</groupId> 
            <artifactId>junit</artifactId> 
            <version>4.7</version> 
            <scope>test</scope> 
        </dependency> 
        <dependency> 
            <groupId>com.icegreen</groupId> 
            <artifactId>greenmail</artifactId> 
            <version>1.3.1b</version> 
            <scope>test</scope> 
        </dependency> 
    </dependencies> 
 
    <build> 
        <resources> 
            <resource> 
                <directory>src/main/resource</directory> 
            </resource> 
        </resources> 
        <plugins> 
            <plugin> 
                <groupId>org.apache.maven.plugins</groupId> 
                <artifactId>maven-source-plugin</artifactId> 
                <version>2.1.1</version> 
                <executions> 
                    <execution> 
                        <id>buildSource</id> 
                        <goals> 
                            <goal>jar-no-fork</goal> 
     &nb

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *