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

Maven项目中不修改 pom.xml 状况下直接运行OpenRewrite的配方

在Java 的Maven项目中,可以在pom.xml 中配置插件用来运行OpenRewrite的Recipe,但是有一些场景是希望不修改pom.xml 文件就可以运行Recipe,比如:

  1. 因为不需要经常运行 OpenRewrite,所以不想在pom.xml 加入不常使用的插件配置
  2. 开发了一个专门用于运行Recipe的项目,用来对其它项目进行升级。

针对上面的场景,解决方法就是使用命令行的方式运行Recipe。

命令运行 OpenRewrite 的类别

根据配方的不同类型,可以将命令行运行配方的类型分为三种:

  1. 配方来自核心 Rewrite 库
  2. 配方来自其他库
  3. 自定义配方的运行

1. 核心 Rewrite 库的配方的命令行运行

什么是核心 Rewrite 库配方?

核心 Rewrite 库配方是位于下面GitHub 库的配方:
https://github.com/openrewrite/rewrite,

在这里插入图片描述

这些配方包括了Java升级,Maven,json, xml ,yaml 等配方。

以 rewrite-java 中的RemoveUnusedImports配方的执行为例,整个配方是移除Java类中没有用的Import 语句。

在这里插入图片描述

执行的命令如下:




mvn -U org.openrewrite.maven:rewrite-maven-plugin:run -Drewrite.activeRecipes=org.openrewrite.java.RemoveUnusedImports
  • -U参数是一个命令行选项,用于强制 Maven 更新快照(snapshot)依赖和发布版本(release)依赖的最新版本信息。具体来说,运行一个 Maven 命令并附带-U参数时,Maven 会在执行之前检查远程仓库中的依赖更新,并尝试下载最新的依赖版本信息(包括快照版本)。
  • -Drewrite.activeRecipes=org.openrewrite.java.RemoveUnusedImports是一个 Maven 属性设置,它告诉rewrite-maven-plugin插件要激活哪个配方(recipe)。

上面命令的作用就是: 强制更新依赖信息,并使用rewrite-maven-plugin插件的run目标来执行RemoveUnusedImports配方,从而移除 Java 代码中的未使用导入。

2. 配方来自其他库的命令行运行

其他库指的就是非核心 Rewrite 库的配方, 举例来说:
Oracle Java 在9之后的版本将 javax 的命名空间修改为jakarta, 再具体一点 之前调用位于 javax.mail 的发信相关的类的命名空间 ,在Java 9之后要修改为 jakarta.mail。
openrewrite 提供了转换包名的recipe: javaxmigrationtojakarta, 详细介绍地址:
https://docs.openrewrite.org/recipes/java/migrate/jakarta/javaxmigrationtojakarta
在这里插入图片描述

对于这种类型的配方的运行,在命令行需要指定配方的工件坐标。

这个配方的GitHub 的地址是:

https://github.com/openrewrite/rewrite-migrate-java/blob/main/src/main/resources/META-INF/rewrite/jakarta-ee-9.yml

在这里插入图片描述

使用 -Drewrite.recipeArtifactCoordinates 指定配方的坐标,完整的命令如下:

mvn -U org.openrewrite.maven:rewrite-maven-plugin:run \
  -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-migrate-java:LATEST \
  -Drewrite.activeRecipes=org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
  1. -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-migrate-java:LATEST:
    • -D参数用于设置系统属性。
    • rewrite.recipeArtifactCoordinatesrewrite-maven-plugin插件的一个配置选项,用于指定要使用的“食谱”的坐标。
    • org.openrewrite.recipe:rewrite-migrate-java:LATEST指定了食谱的 groupId、artifactId 和版本。LATEST是一个占位符,指示 Maven 使用可用的最新版本。这个食谱包含了一系列预定义的迁移规则,用于更新 Java 代码。
  2. -Drewrite.activeRecipes=org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta:
    • 这个参数同样使用-D来设置系统属性。
    • rewrite.activeRecipes指定了要在当前构建中应用的特定迁移规则的列表。
    • org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta是迁移规则的标识符,它指示插件应用将javax包迁移到jakarta包的规则。这是 Java EE 到 Jakarta EE 迁移的一部分,其中javax命名空间被迁移到jakarta命名空间。

3. 自定义配方的运行

自行开发的 Imperative recipes (命令式配方), 运行的命令 2 的情形是类似的,将自定义的配方发布到私有库或是本地库,通过指定工件坐标的方式来运行。

参数的传递

命令行的方式是无法传递参数的,如果要传递参数要怎么处理呢?

方式就是通过 rewrite.yml 文件

  1. 在项目根目录中创建或更新 rewrite.yml
    定义一个新配方,该配方包装了要运行的配方并指定了要使用的参数。
    示例(以 recipePkgRename
    配方为例):
type: specs.openrewrite.org/v1beta/recipe
name: com.osxm.recipePkgRename
recipeList:
  - org.openrewrite.java.ChangePackage:
      oldPackageName: org.old.package.name
      newPackageName: org.new.package.name

运行配方:
使用 Maven 插件运行新定义的配方。
示例命令:

mvn -U org.openrewrite.maven:rewrite-maven-plugin:run 
  -Drewrite.activeRecipes=com.osxm.recipePkgRename



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

相关文章:

  • 前后端分离项目部署到云服务器、宝塔(前端vue、后端springboot)详细教程
  • golang 编程规范 - 项目目录结构
  • 创龙3588——debian根文件系统制作
  • MySQL秘籍之索引与查询优化实战指南
  • Docker安装(Docker Engine安装)
  • 单片机常用外设开发流程(1)(IMX6ULL为例)
  • 数据结构与算法之动态规划: LeetCode 115. 不同的子序列 (Ts版)
  • 小程序样式 —— 20全局样式和局部样式
  • Spring Boot环境配置
  • 鸿蒙项目云捐助第二十九讲云捐助项目云数据库商品的批量增加功能实现
  • 蒙特卡洛方法试验的一般过程和经典例子
  • Qanything 2.0源码解析系列6 PDF解析逻辑
  • 计算机网络•自顶向下方法:IP编址
  • 【每日学点鸿蒙知识】监听输入框删除键、进入页面前网络请求、同层渲染、GridCol左对齐、自定义弹窗禁止手势
  • 语音合成芯片:让净水机更智能、更便捷
  • 练习题:29
  • naive ui 使用地址记录
  • 人工智能知识分享第二天-机器学习之KNN算法
  • 2024终章---愿昭昭如愿,愿岁岁安澜
  • 大模型的实践应用34-大模型LLama3的预训练的全流程介绍,包括:数据收集处理、模型架构与初始化,训练策略等
  • STM32G0B1 can Error_Handler 解决方法
  • tcpdump指南(1)
  • KMP 2024 年总结,Kotlin 崛起的一年
  • 【题解】—— LeetCode一周小结52
  • Node.js详细安装教程
  • CPT203 Software Engineering 软件工程 Pt.6 软件管理(中英双语)