Lombok annotation processor not added to modules of a Maven multi-module project
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 50/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 冷清
- 技术栈
- java
- 领域
- build-system, tooling
调研方向
从 EnableLombokAnnotationProcessor recipe 和名为 doesNotAddLombokToModuleWithoutLombok 的测试开始,然后在 multi-module 根目录以及 with-lombok 中直接重新运行 rewrite:run。将此行为与 #1031 中添加的测试进行比较。当 root 和 without-lombok 的 POM 保持不变,而 annotation processor 被添加到 with-lombok 时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
What version of OpenRewrite are you using?
- OpenRewrite v8.83.0
- Maven plugin v6.40.0
- rewrite-migrate-java v3.35.0
How are you running OpenRewrite?
via Maven on a multi-module project
What is the smallest, simplest way to reproduce the problem?
This is a multi-module project with a root and two modules. One of the modules uses lombok.
I set the version of rewrite-migrate-java to 3.31.2 because the behaviour changed from 3.31.1 to 3.31.2 and is the same from 3.31.2 to 3.35.0.
pom.xml of root module:
<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>
<groupId>org.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>with-lombok</module>
<module>without-lombok</module>
</modules>
<properties>
<maven.compiler.release>21</maven.compiler.release>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.44</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.openrewrite.maven</groupId>
<artifactId>rewrite-maven-plugin</artifactId>
<version>6.40.0</version>
<configuration>
<exportDatatables>true</exportDatatables>
<activeRecipes>
<recipe>org.openrewrite.java.migrate.EnableLombokAnnotationProcessor</recipe>
</activeRecipes>
</configuration>
<dependencies>
<dependency>
<groupId>org.openrewrite.recipe</groupId>
<artifactId>rewrite-migrate-java</artifactId>
<version>3.31.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
pom.xml of module with-lombok:
<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.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>with-lombok</artifactId>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
pom.xml of module without-lombok:
<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.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>without-lombok</artifactId>
</project>
What did you expect to see?
Up to rewrite-migrate-java version 3.31.1, the Lombok annotation processor was added to the parent pom. My understanding is that the intention of #1031 (added in version 3.31.2) was to add the annotation processor only to those modules where lombok is used.
Therefore, I expect
- the pom.xml of the root module to be unchanged,
- the pom.xml of module without-lombok to be unchanged and
- the annotation processor being added to the pom.xml of module with-lombok:
<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.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>with-lombok</artifactId>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.44</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>
What did you see instead?
The Lombok annotation processor is added to none of the pom.xml files.
Additional considerations
- The Lombok annotation processor will be added, when I run rewrite:run directly on the module with-lombok. But I doubt that it is the intended behaviour to run the target on each module individually.
- The tests added with #1031 do not truly use a multi-module project. The new test
doesNotAddLombokToModuleWithoutLombokjust uses a set of two (unrelated) modules. - Is traversing the module hierarchy the missing part?
- 主要语言
- Java
- 星标
- 156
- 派生
- 129
- 平均合并
- 3 天 8 小时
- 30 天内合并 PR
- 14
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
openrewrite/rewrite-migrate-java 的其他 Issue
-
bug
难度 4/5 3-5 天 新手友好度 68/100
openrewrite/rewrite-migrate-java#1246 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 70/100
openrewrite/rewrite-migrate-java#1228 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 32/100
openrewrite/rewrite-migrate-java#1227 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 70/100
openrewrite/rewrite-migrate-java#1146 · 3 条评论 ·
维护者通常 1 天内回复
-
bug
难度 4/5 3-5 天 新手友好度 45/100
openrewrite/rewrite-migrate-java#1069 · 2 条评论 ·
维护者通常 1 天内回复
查看 openrewrite/rewrite-migrate-java 的全部 Issue
相似的 Issue
-
area/frontend good first issue kind/cooldown
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 84/100
beehive-lab/TornadoVM#1151 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 88/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 77/100
FasterXML/jackson-dataformats-binary#823 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 90/100
维护者通常 1 天内回复