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

news2025/2/4 5:50:32

在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.coloradmin.cn/o/2268324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

命令行之巅:Linux Shell编程的至高艺术(上)

文章一览 前言一、shell概述1.1 shell的特点和类型1.1.1 **shell的特点:**1.1.2 常用shell类型 1.2 shell脚本的建立和执行1.2.1 建立shell脚本1.2.2 执行shell脚本的方式1.2.3 shell程序实例 二、shell变量与算数运算2.1 简单shell变量2.1.1 简单变量定义和赋值2.1…

深度学习:基于MindSpore NLP的数据并行训练

什么是数据并行? 数据并行(Data Parallelism, DP)的核心思想是将大规模的数据集分割成若干个较小的数据子集,并将这些子集分配到不同的 NPU 计算节点上,每个节点运行相同的模型副本,但处理不同的数据子集。…

Docker Run使用方法及参数详细说明

Docker Run使用方法及参数详细说明 基本语法常用参数使用示例总结Docker Run是Docker中最基本的命令之一,用于创建并启动一个新的容器。通过Docker Run,用户可以基于指定的镜像创建一个容器实例,并且可以配置容器的各种参数,如网络设置、存储选项等。下面将详细介绍Docker …

QTDemo:串口调试工具

项目简介 本项目通过QT框架设计一款可以在Windows、Linux等平台的跨平台串口助手,串口功能能够满足基本的调试需求。 本项目采用的版本为:QT5.14 visual studio 2022 进行开发。 项目源码:https://github.com/say-Hai/MyCOMDemo 项目页面&am…

【K8S问题系列 | 21 】K8S中如果PV处于Bound状态,如何删除?【已解决】

在Kubernetes(K8S)的存储管理体系中,持久卷(PersistentVolume,PV)是一种重要的资源,它为Pod提供了持久化存储能力。当PV处于Bound状态时,意味着它已经与某个持久卷声明(P…

【行业发展报告】2024大数据与智能化行业发展浅析

回首 2024,大数据智能化浪潮汹涌。海量数据宛如繁星,在智能算法的苍穹下汇聚、碰撞,释放出洞察市场与用户的强大能量,精准勾勒出商业新航线。我们精心雕琢技术架构,从数据存储的坚固基石到处理分析的高效引擎&#xff…

Mumu模拟器12开启ADB调试方法

在使用安卓模拟器进行开发或调试时,ADB(Android Debug Bridge)是一项不可或缺的工具。大多数模拟器默认开启了ADB调试功能,但在安装最新版的 Mumu模拟器12 时,可能会遇到 adb devices 无法识别设备的问题。 问题描述 …

金融租赁系统的创新发展与市场竞争力提升探讨

内容概要 随着经济的快速发展,金融租赁系统逐渐成为金融市场中不可或缺的一环。它不仅提供了灵活的资金解决方案,还促进了企业的资本结构优化与资源配置效率。因此,了解该系统的市场背景与发展现状至关重要。 在现今环境下,新兴…

SQL 实战:基于经纬度的距离计算与位置查询

在位置服务(LBS)系统中,基于地理位置查询和距离计算是核心功能之一。例如: 查找附近的商铺、加油站或医院。计算两点之间的实际直线距离。筛选出指定范围内的用户或设备位置。 MySQL 提供了多种方式实现地理位置查询&#xff0c…

DAY1牛客题库1-3算法题:C语言版本(思路仅供参考)

挑战一下7天刷完牛客题库的108个题,今天是第一天思密达~一直以来都特别懒的做题,还是得勤奋点我觉得~今天只做了3个~嘻嘻明天去玩回家多弄几个~ 1.输出字符串最后一个单词长度 【1】题目: #include"stdio.h" #include"string…

LeetCode 83 :删除排链表中的重复元素

题目: 地址:https://leetcode.cn/problems/remove-duplicates-from-sorted-list/ 方法一: 方法二: package com.zy.leetcode.LeetCode_04;/*** Author: zy* Date: 2024-12-25-15:19* Description: 删除排链表中的里复元素* …

微信流量主挑战:用户破16!新增文档转换(新纪元3)

朋友们,报告好消息!我的小程序用户数量已经涨到16个了!没错,真没拉朋友圈亲戚好友来撑场子,全靠实力(和一点点运气)吸引了16位陌生小伙伴光临!这波进步,连我自己都感动了…

Java-38 深入浅出 Spring - AOP切面增强 核心概念 相关术语 Proxy配置

点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatis&#xff…

基于Docker+模拟器的Appium自动化测试(二)

模拟器的设置 打开“夜神模拟器”的系统设置,切换到“手机与网络”页,选中网络设置下的“开启网络连接”和“开启网络桥接模式”复选框,而后选择“静态IP”单选框,在IP地址中输入“192.168.0.105”,网关等内容不再赘述…

【从零开始入门unity游戏开发之——C#篇36】C#的out协变和in逆变如何解决泛型委托的类型转换问题

文章目录 一、知识回顾和问题分析1、回顾强制转换和as转换知识2、问题分析 二、为什么泛型委托不行?1、泛型类型的严格类型检查2、**as 和强制类型转换不能直接使用** 三、如何解决这个问题?1、**协变(out)**2、**逆变&#xff08…

深度学习使用Anaconda打开Jupyter Notebook编码

新手入门深度学习使用Anaconda打开Jupyter Notebook编码 1. 安装Anaconda 第一种是Anaconda官网下载安装包,但是很慢,不太建议 第二种使用国内清华大学镜像源下载 选择适合自己电脑的版本,支持windows,linux系统 下载完之后自行…

Linux套接字通信学习

Linux套接字通信 代码源码:https://github.com/say-Hai/TcpSocketLearn/tree/CThreadSocket 在网络通信的时候, 程序猿需要负责的应用层数据的处理(最上层),而底层的数据封装与解封装(如TCP/IP协议栈的功能)通常由操作系统、网络协…

git clone 和 conda 换源

文章目录 git clone 通过 sshconda 创建虚拟环境通过 env.yml 文件conda 换源 git clone 通过 ssh git clone ssh://用户名IP地址:/仓库名字.gitconda 创建虚拟环境通过 env.yml 文件 conda env create -f environment.ymlconda 换源 Step 1 生成 .bashrc 文件在家目录下。…

机床数据采集网关在某机械制造企业的应用

随着工业4.0时代的到来,智能制造已成为制造业转型升级的重要方向。数控机床作为现代制造业的核心设备,其运行状态和加工参数的数据实时采集与分析对于提升生产效率、优化生产流程具有关键意义。 背景概述 某机械制造企业拥有多台数控机床,这…

c# RSA加解密工具,.netRSA加解密工具

软件介绍 名称: c# RSA加解密工具,.netRSA加解密工具依赖.net版本: .net 8.0工具类型: WinForm源码下载 c# RSA加解密工具,.netRSA加解密工具 依赖项 WinFormsRSA.csproj <Project