开发者

maven父子工程多模块统一管理版本号的解决方法

开发者 https://www.devze.com 2024-09-12 10:30 出处:网络 作者: HBLOG
目录1.为什么要统一管理版本?2.如何解决呢?父工程子模块编译3.引用1.为什么要统一管理版本?
目录
  • 1.为什么要统一管理版本?
  • 2.如何解决呢?
    • 父工程
    • 子模块
    • 编译
  • 3.引用

    1.为什么要统一管理版本?

    maven父子工程多模块,每个模块还都可以独立存在,子模块往往通常希望和父工程保持一样的版本,如果每个工程单独定义版本号,后php期变更打包也非常麻烦,如何维护一个全局的版本号呢?

    2.如何解决呢?

    Maven官方文档说:自 Maven 3.5.0-beta-1 开始,可以使用 ${revision}, ${sha1} and/or ${changelist} 这样的变量作为版本占位符。

    即在maven多模块项目中,可配合插件flatten-maven-plugin${revision}属性来实现全局版本统一管理。

    父工程

    <?XML version="1.0" encoding="UTF-8"?>
    <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/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-parent</artifactId>
            <version>2.7.18</version>
        </parent>
        <groupId>com.xxx.project</groupId>
        <artifactId>xxx-parent</artifactId>
        <packaging>pom</packaging>
        <version>${revision}</version>
        <modules>
            <module>module1</module>
            <module>module2</module>
            <module>module3</module>
        </modules>
    
        <properties>
            <!-- globe version,if you can update the version for all project -->
            <revision>1.1.1</revision>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
        <build>
            <plugins>
                <!-- 添加flatten-maven-plugin插件 -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>flatten-maven-plugin</artifactId>
                    <version>1.3.0</version>
                    <inherited>true</inherited>
                    <executions>
                        <execution>
                            <id>flatten</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>flatten</goal>
                            </goals>
                            <configuration>
                                <updatePom编程客栈File>true</updatePomFile>
                                <flattenMode>resolveCiFriendliesOnly</flattenMode>
                                <pomElements>
                                    <parent>expand</parent>
                                    <distributionManagement>remove</distributionManagement>
                                    <repositories>remove</repositories>
                                </pomElements>
                            </configuration>
                        </execution>
                        <execution>
                            <id>flatten.clean</id>
                            <phase>clean</phase>
                            <goals>
                                <goal>clean</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>
    

    子模块

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/eqCoSNE4.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/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>xxx-parent</artifactId>
            <groupId>com.xxx.project</groupId>
            <version>${revision}</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>module3</artifactId>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
        <dependencies>
    
            <dependency>
                <groupId>com.xxx.project</groupId>
                <artifactId>module1</artifactId>
                <version>${revision}</version>
            </dependency&phpgt;
        </dependencies>
    
    
    </project>
    

    编译

    mvn clean package
    

    基于以上操作,每次版本号变更,只需要修改父模块POM文件中的revision即可

    3.引用

    https://m编程aven.apache.org/maven-ci-friendly.html

    到此这篇关于maven父子工程多模块统一管理版本号的解决方法的文章就介绍到这了,更多相关maven一管理版本号内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号