Java 10上的maven lombok插件:在maven中找不到注释

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

我知道IDE不能理解lombok的问题。但是现在,在一个新项目中,我遇到了相反的问题:Idea确实理解它,但maven没有。

当我将lombok插件添加到maven并运行干净安装时,lombok插件无法转换类,因为它声称包lombok不存在。

这是我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>henkk</artifactId>
        <groupId>de.newcron</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>henkk-chat-api</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok-maven-plugin</artifactId>
                <version>1.18.0.0</version>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>delombok</goal>
                        </goals>
                        <configuration>
                            <addOutputDirectory>false</addOutputDirectory>
                            <sourceDirectory>src/main/java</sourceDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>


</project>

(来自父pom的注释:语言级别是java 10,源代码编码为utf-8,我在多模块构建中使用jigsaw模块)

我得到的错误是这样的。我试图将org.projectlombok:lombik的范围设置为编译或提供,结果没有任何差别

如果有人知道如何解决这个问题,我会非常感激吗?

[INFO] ---------------------< de.newcron:henkk-chat-api >----------------------
[INFO] Building henkk-chat-api 1.0.0-SNAPSHOT                             [2/4]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ henkk-chat-api ---
[INFO] 
[INFO] --- lombok-maven-plugin:1.18.0.0:delombok (default) @ henkk-chat-api ---
[WARNING] Unable to detect tools.jar; java.home is /usr/lib/jvm/java-11-openjdk-amd64
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/module-info.java:3: error: module not found: lombok
    requires lombok;
             ^
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/MessageReceivedEvent.java:4: error: package lombok does not exist
import lombok.AllArgsConstructor;
             ^
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/MessageReceivedEvent.java:5: error: package lombok does not exist
import lombok.ToString;
             ^
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/MessageReceivedEvent.java:7: error: cannot find symbol
@AllArgsConstructor
 ^
  symbol: class AllArgsConstructor
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/MessageReceivedEvent.java:8: error: cannot find symbol
@ToString
 ^
  symbol: class ToString
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatIdentity.java:6: error: cannot find symbol
@AllArgsConstructor
 ^
  symbol: class AllArgsConstructor
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatIdentity.java:7: error: cannot find symbol
@EqualsAndHashCode
 ^
  symbol: class EqualsAndHashCode
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatIdentity.java:8: error: cannot find symbol
@ToString
 ^
  symbol: class ToString
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatIdentity.java:4: error: package lombok does not exist
import lombok.*;
^
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatMessage.java:5: error: package lombok does not exist
import lombok.AllArgsConstructor;
             ^
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatMessage.java:6: error: package lombok does not exist
import lombok.EqualsAndHashCode;
             ^
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatMessage.java:7: error: package lombok does not exist
import lombok.NonNull;
             ^
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatMessage.java:8: error: package lombok does not exist
import lombok.ToString;
             ^
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatMessage.java:10: error: cannot find symbol
@AllArgsConstructor
 ^
  symbol: class AllArgsConstructor
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatMessage.java:11: error: cannot find symbol
@EqualsAndHashCode
 ^
  symbol: class EqualsAndHashCode
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatMessage.java:12: error: cannot find symbol
@ToString
 ^
  symbol: class ToString
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatIdentity.java:10: error: cannot find symbol
    @NonNull
     ^
  symbol:   class NonNull
  location: class SimpleChatIdentity
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatMessage.java:14: error: cannot find symbol
    @NonNull
     ^
  symbol:   class NonNull
  location: class SimpleChatMessage
/home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/simple/SimpleChatMessage.java:16: error: cannot find symbol
    @NonNull
     ^
  symbol:   class NonNull
  location: class SimpleChatMessage
[INFO] Delombok complete.
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ henkk-chat-api ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ henkk-chat-api ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 8 source files to /home/matthias/dev/henkk/henkk-chat-api/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/MessageReceivedEvent.java:[10,32] variable sender not initialized in the default constructor
[ERROR] /home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/MessageReceivedEvent.java:[11,31] variable message not initialized in the default constructor
[INFO] 2 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] henkk 1.0.0-SNAPSHOT ............................... SUCCESS [  0.991 s]
[INFO] henkk-chat-api ..................................... FAILURE [  1.135 s]
[INFO] henkk-application .................................. SKIPPED
[INFO] henkk-chat-stdin 1.0.0-SNAPSHOT .................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.277 s
[INFO] Finished at: 2018-08-29T18:12:12+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project henkk-chat-api: Compilation failure: Compilation failure: 
[ERROR] /home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/MessageReceivedEvent.java:[10,32] variable sender not initialized in the default constructor
[ERROR] /home/matthias/dev/henkk/henkk-chat-api/src/main/java/de/newcron/henkk/chat/api/MessageReceivedEvent.java:[11,31] variable message not initialized in the default constructor
[ERROR] -> [Help 1]
java maven lombok java-10 jigsaw
1个回答
2
投票

将配置更新为以下内容可以帮助解决问题: -

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.2</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>11</release>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.2</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-maven-plugin</artifactId>
            <version>1.18.0.0</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>delombok</goal>
                    </goals>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <addOutputDirectory>false</addOutputDirectory>
                        <sourceDirectory>src/main/java</sourceDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我试了一下,使用命令mvn clean install生成的目标文件具有如下的删除代码: -

enter image description here

虽然在生成之后,我会在IDE中看到一条消息“模块中已经存在module-info.java”。

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