Lombok not working in a Netbeans project

2020-06-03 02:48发布

I want to use Lombok in a project to use @Getter and @Setter.

I included using Maven:

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.12.6</version>
        <scope>provided</scope>
    </dependency>

Import is OK for Netbeans:

import lombok.Getter;
import lombok.Setter;

But auto setters and getters don't work (no autocompletion / "cannot find symbol ...").

Strange thing is that for another project I have it's working fine! But I can't figure the differences.

I tested to:

  • change the lombok version (even the last): for any version, the import don't work anymore

  • build the project with Maven: it's OK!

  • use Eclipse: it's OK! (but I am the only one to decide unfortunately)

=> so I'm sure this is a Netbeans related problem

  • enable annotation processing, as I've seen in tutorials=> I don't have such option in my project properties

enter image description here

Any idea ?

4条回答
Juvenile、少年°
2楼-- · 2020-06-03 03:12

This worked with us:

  • remove <scope>provided</scope> from the Lombok dependency
  • clean and build the project
  • change the Lombok version (we changed from 1.16.20 to 1.16.16)
  • clean and build the project
  • restore the Lombok version and put back <scope>provided</scope>
  • clean and build the project
查看更多
我命由我不由天
3楼-- · 2020-06-03 03:15

I found a solution on https://groups.google.com/forum/#!topic/project-lombok/xbgzA86pvJs

=> update version of maven-compiler-plugin was the only way to make it work

查看更多
趁早两清
4楼-- · 2020-06-03 03:18

configure the pom

<properties>
    <src.dir>src/main/java</src.dir>
</properties>

<profiles>
    <profile>
        <id>lombok-build</id>
        <properties>
            <src.dir>${project.build.directory}/generated-sources/delombok</src.dir>
        </properties>
    </profile>
</profiles>

<dependencies>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.8</version>
    <scope>provided</scope>
</dependency>
</dependencies>
    <build>
        <sourceDirectory>${src.dir}</sourceDirectory>
    <plugins>
        <plugin>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-maven-plugin</artifactId>
            <version>1.16.16.0</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>delombok</goal>
                    </goals>
                    <configuration>
                        <sourceDirectory>src/main/java</sourceDirectory>
                        <addOutputDirectory>false</addOutputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Then, specify lombok-build as the active profile for various actions (build, debug etc) under Project Properties->Actions->Activate Profiles.

At this blog there is a github sample project and the configuration with pictures to use lastest version of maven+netbeans+lombok, that works for me.

查看更多
▲ chillily
5楼-- · 2020-06-03 03:31

In Netbeans 8.2 using Apache Maven 3.5.4 use Lombok 1.18.4 or much older 1.16.16.

In Netbeans 10.0/9.0 using Apache Maven 3.5.4 use Lombok 1.18.4, older versions of Lombok are really buggy when Compile On Save is used in Netbeans 10.0/9.0

I updated Lombok to a new version

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
    <version>1.18.8</version> <!--1.18.8 for Netbeans 9/10 OR 1.16.16 for Netbeans 8 with Java 8 -->
</dependency>

NB

  • For maven-compiler-plugin, remove any annotationProcessorPaths to do with Lombok in the maven-compiler-plugin
  • Remove any Lombok maven plugins

This is not needed, as Maven and Netbeans does this out of the box. You only need the right Lombok dependency in Maven.

查看更多
登录 后发表回答