Openrewrite:逐步应用食谱列表

问题描述 投票:0回答:1

我想将用于迁移到 java 17 的 openrewrite 配方列表应用到我的代码库。

使用提供的 mvn 命令效果非常好,但所有更改(在“配方列表”中列出)

都是同时完成的,因此不能单独提交。

我正在处理一个巨大的代码库,我不能只拥有一个提交“Java 17迁移”,其中包含成千上万个不相关的更改(例如,

java多行字符串依赖项更改在同一提交中进行更改) ).

当然,我可以单独运行每个步骤并手动提交每个步骤,但这不方便且耗时......

我想知道是否有一个方便的解决方案,例如“交互模式”,可以应用配方列表中的每个项目,暂停以让我正确提交更改,然后继续应用下一个项目?

java git migration openrewrite
1个回答
0
投票
很高兴听到这个食谱至少效果很好,而且你非常喜欢这些改变,想要提交它们。我们的配方本质上是高度分层的,当您执行 Java 17 迁移时,您实际上正在执行 180 个单独的迁移配方。其中一些食谱是部分步骤,其本身没有意义;例如,考虑不同的配方如何更改导入与添加依赖项;您需要两者才能使更改有意义,并且仅提交其中的一部分将导致中间步骤失败。这就是为什么我们不支持中间步骤来提交结果;这实在是太难以处理了。我们还必须重复写入磁盘,这会进一步减慢迁移速度。

我确实理解您希望逐步迁移,为此我有一些建议,您可以根据需要进行组合。

  1. 首先,您只能运行层次结构的一部分;例如:

    迁移到 Java 17迁移到 Java 11迁移到 Jakarta EE 9迁移到 Java 8 组成。您可以单独运行其中每一个

  2. 您还可以

    使用先决条件来限制对特定源集文件集的更改。

在单独的运行中同时使用这两种方法,您可能会创建一些仍然可以进行审查的东西,特别是当受到 1 的约束时,更改可能非常相似。

然而,每个配方运行都必须再次构建无损语义树,这可能需要一些时间,特别是对于较大的项目。如果您想加快速度,可以查看 Moderne.io,我们允许您使用预先计算的 LST。

我希望这可以帮助您找到实现这些变革的前进方向。也随时欢迎在我们的 Slack 中提问。

© www.soinside.com 2019 - 2024. All rights reserved.