Arthur Kharkivskiy
Arthur Kharkivskiy

Reputation: 540

Compilation error - Groovy and Lombok

Here is my Maven command

mvn clean compile test-compile test

for this project

but I am facing with

[ERROR] no more tokens - could not parse error message: Groovy:unable to resolve class Delegate , unable to find class for annotation [ERROR] 12. ERROR in D:\Projects\lombok-groovy-example-master\src\main\groovy\prystasj\lombok\example\groovy\Rocket.groovy (at line 5) [ERROR] @Data

mvn --version

Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T22:39:06+03:00)

java -version

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

Code from repository

<properties>
    <groovy.version>2.0.5</groovy.version>
    <java.version>1.6</java.version>
    <lombok.version>0.11.4</lombok.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
    <compilerId>groovy-eclipse-compiler</compilerId>
    <fork>true</fork>
    <verbose>false</verbose>
    <source>${java.version}</source>
    <target>${java.version}</target>
    <encoding>${project.build.sourceEncoding}</encoding>
    <compilerArguments>
    <javaAgentClass>lombok.core.Agent</javaAgentClass>
    </compilerArguments>
    </configuration>
    <dependencies>
    <dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-eclipse-compiler</artifactId>
    <version>2.7.0-01</version>
    </dependency>
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>${lombok.version}</version>
    </dependency>//...

Class (file on git differs!)

@Data
public class Rocket {
}

Upvotes: 7

Views: 6652

Answers (2)

Saravanan
Saravanan

Reputation: 911

I was also having issue on using Lombok with groovy. (It wasn't generating any code) So I just changed my model class to .java and did the lombok stuff on the java class. Since we can intermix java and groovy code without any issue, I'm now able to use it without any issue.

Upvotes: 0

Krzysztof Atłasik
Krzysztof Atłasik

Reputation: 22605

You shouldn't use Lombok for Groovy, it is intended to be used only with Java.

Groovy has built-in annotation @Canonical which does what you want:

  • it creates useful equals, hashCode and toString methods
  • it creates no-arg and tuple constructor

So in your case use:

@Canonical
public class Rocket {}

Additionally you don't need to create getters and setters for fields in Groovy. If you add any field to your class, Groovy would create getters and setters.

Upvotes: 16

Related Questions