Maven多模組中,parent version如何採用自定${version}表示

木头左發表於2024-04-15

背景

在Java的開發中,Maven多模組已經成為了一種標配,透過多模組的管理,我們可以更好地組織我們的工程結構,並且更容易進行團隊協作。而在Maven的多模組工程中,通常會有一個父模組,而在這個父模組中,我們通常需要指定一些全域性的配置,比如依賴管理,外掛管理等等資訊,這時候就需要用到parent version的配置。

問題

然而,在實際的生產環境中,父模組的版本號並不一定會滿足我們的需求,此時我們就需要採用自定義的parent version。

解決方案

方案一:使用屬性定義parent version

在Maven中,我們可以使用屬性來定義版本號,在父模組中,我們可以這樣定義一個屬性:

<properties>
    <parent.version>1.0.0-SNAPSHOT</parent.version>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <configuration>
                        <tasks>
                            <property name="project.version" value="${parent.version}" />
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

然後在子模組中,我們可以引用這個屬性來定義parent version,如下所示:

<parent>
    <groupId>com.example</groupId>
    <artifactId>my-parent</artifactId>
    <version>${parent.version}</version>
</parent>

這樣,當我們需要修改parent version時,只需要修改屬性的值即可。

方案二:使用pom.xml檔案定義parent version

如果我們並不想使用屬性來定義parent version,可以直接在pom.xml檔案中定義parent元素,如下所示:

<parent>
    <groupId>com.example</groupId>
    <artifactId>my-parent</artifactId>
    <version>1.2.0</version>
</parent>

這樣,子模組就可以直接繼承父模組的所有資訊,包括依賴管理,外掛版本等等。

總結

在Maven多模組工程中,父模組的版本號是非常重要的配置選項,透過以上兩種方式,我們可以靈活地自定義parent version,讓我們的工程更加符合我們的實際需求。

相關文章