当前位置: 首页 > article >正文

使用OpenRewrite自动做框架升级比如Spring Boot

简介

OpenRewrite 用于大规模自动化源代码重构

OpenRewrite 是一个源代码自动重构生态系统,使开发人员能够有效消除其存储库中的技术债务。

它由一个自动重构引擎组成,该引擎运行预先打包的开源重构方案,用于常见框架迁移、安全修复和风格一致性任务,从而将您的编码工作从几小时或几天减少到几分钟。 OpenRewrite Gradle 插件和 OpenRewrite Maven 插件等构建工具插件可帮助您一次在一个存储库上运行这些配方。

OpenRewrite使用方式有五种

1.利用Maven Plugin

使用 OpenRewrite 等第三方工具将现有的 Spring Boot 应用程序迁移到 Spring Boot 3。

<plugin>
    <groupId>org.openrewrite.maven</groupId>
    <artifactId>rewrite-maven-plugin</artifactId>
    <version>5.25.0</version>
    <configuration>
        <activeRecipes>
           <recipe>org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_0</recipe>
        </activeRecipes>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.openrewrite.recipe</groupId>
            <artifactId>rewrite-spring</artifactId>
            <version>5.5.0</version>
        </dependency>
    </dependencies>
</plugin>

这里,我们通过recipe属性指定升级到Spring Boot版本3。 OpenRewrite 有很多用于升级 Java 项目的方法可供选择。

最后,让我们运行迁移命令:

$ mvn rewrite:run

运行结果如下:

[INFO] Running recipe(s)...
[WARNING] Deleted file src/main/resources/META-INF/spring.factories by:
[WARNING]     org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_0
[WARNING]         org.openrewrite.hibernate.MigrateToHibernate61
[WARNING]             org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate6.0
[WARNING]                 org.openrewrite.java.ChangePackage: {oldPackageName=com.vladmihalcea, newPackageName=io.hypersistence.utils, recursive=true}
[WARNING] Changes have been made to src/main/java/org/example/MyConnectionErrorConfiguration.java by:
[WARNING]     org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_0
[WARNING]         org.openrewrite.java.spring.boot2.MoveAutoConfigurationToImportsFile
[WARNING] Please review and commit the results.

上面的命令将项目迁移到 Spring Boot 3,包括安全配置。通过执行 mvn rewrite:run 您可以为您的代码库运行 OpenRewrite。完成后,您将拥有一组更改的文件,如果您对结果满意,则可以查看并提交这些文件。

如果您不想实际更改源代码,还可以使用 mvn rewrite:dryrun 命令 - 这只会为所有更改生成一组差异。OpenRewrite将生成补丁文件target/rewrite/rewrite.patch,我们可以使用它来查看更改。对于 Maven pom.xml 它将生成以下统一差异:

为了使用 OpenRewrite 修复我们的编码错误并执行 Spring Boot 升级,我们需要将其配置为同时使用 CommonStaticAnalysis 和UpgradeSpringBoot_3_0

<activeRecipes>
            <activeRecipe>
                org.openrewrite.java.cleanup.CommonStaticAnalysis
            </activeRecipe>
            <activeRecipe>
                org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_0
            </activeRecipe>
        </activeRecipes>

一旦我们完成了应用程序的迁移,我们就可以让 OpenRewrite Maven 插件从 pom.xml 中删除自身。

mvn rewrite:remove

2. 直接运行maven命令

Migrate to Spring Boot 3.0

mvn -U org.openrewrite.maven:rewrite-maven-plugin:run -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-spring:RELEASE -Drewrite.activeRecipes=org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_0

Migrate to jdk17

mvn -U org.openrewrite.maven:rewrite-maven-plugin:run -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-migrate-java:RELEASE -Drewrite.activeRecipes=org.openrewrite.java.migrate.UpgradeToJava17

3. Gradle

把下面代码加入build.gradle 文件。 执行gradle rewriteRun

plugins {
    id("org.openrewrite.rewrite") version("6.9.0")
}

rewrite {
    activeRecipe("org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_0")
}

repositories {
    mavenCentral()
}

dependencies {
    rewrite("org.openrewrite.recipe:rewrite-spring:5.6.0")
}

4. init.gradle

在项目的根目录中创建一个名为 init.gradle 的文件。
initscript {
    repositories {
        maven { url "https://plugins.gradle.org/m2" }
    }
    dependencies { classpath("org.openrewrite:plugin:6.9.0") }
}
rootProject {
    plugins.apply(org.openrewrite.gradle.RewritePlugin)
    dependencies {
        rewrite("org.openrewrite.recipe:rewrite-spring:5.6.0")
    }
    rewrite {
        activeRecipe("org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_0")
    }
    afterEvaluate {
        if (repositories.isEmpty()) {
            repositories {
                mavenCentral()
            }
        }
    }
}

运行命令

gradle --init-script init.gradle rewriteRun

5 Moderne CLI

mod run . --recipe UpgradeSpringBoot_3_0

参考资料

Migrate to Spring Boot 3.1 | OpenRewrite by Moderne


http://www.kler.cn/a/274633.html

相关文章:

  • Android Compose list 下拉刷新、上拉加载更多
  • React系列(八)——React进阶知识点拓展
  • 免费GIS工具箱:轻松将glb文件转换成3DTiles文件
  • ES搜索原理
  • 使用xjar 对Spring-Boot JAR 包加密运行
  • OpenCV圆形标定板检测算法findGrid原理详解
  • Siloed No More: How AI-Driven Tech Stack Consolidation Boosts Revenue
  • C# 使用OpenCvSharp4将Bitmap合成为MP4视频的环境
  • O2OA红头文件流转与O2OA版式公文编辑器基本使用
  • java基础-Test03:图书管理系统 超详细注释
  • vue-router(v4.0) 基础3
  • Panasonic松下PLC如何数据采集?如何实现快速接入IIOT云平台?
  • fs方法举例
  • 蓝桥杯day4刷题日记
  • 算法笔记p335堆
  • 景联文科技:提供通用多模态数据,助力AI多模态领域实现飞跃式发展
  • CMU 10-414/714: Deep Learning Systems --hw3
  • HTML、XHTML和HTML5 的区别是什么?
  • 《优化接口设计的思路》系列:第九篇—用好缓存,让你的接口速度飞起来
  • Linux运维_Linux临时环境变量设置(bin和include以及lib)
  • Android14音频进阶:AudioFlinger究竟如何混音?(六十三)
  • 开源离线语音识别输入工具CapsWriter v1.0——支持无限时长语音、音视频文件转录字幕。
  • 《论文阅读》端到端情感原因对提取的有效子句间建模
  • 洛谷_P1104 生日_python写法
  • windows搭建Elasticsearch环境
  • 配电站房安全AI识别-智能化安全监控的革命---豌豆云