Lombok and Maven
Solution 1
This should work as is, and has nothing to do with IntelliJ idea. But I would:
- make sure the
@Data
annotation is the lombok one - remove the repository definition (maven central is fine)
- use a recent lombok version (1.16.0 as of this writing)
- rebuild (
mvn clean package
)
I think the lombok jar is not found by maven in your case or that you might have another @Data
.
Solution 2
This might work
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.12</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
Latest versions:
- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin
- https://mvnrepository.com/artifact/org.projectlombok/lombok
Related videos on Youtube
Kennedy Oliveira
A Java Developer who is interested in Java and Scala Actor Systems and Akka, Domain Driven Design, Reactive Systems and much more.
Updated on December 23, 2021Comments
-
Kennedy Oliveira over 2 years
I'm trying to use Lombok with Maven and VRaptor on IntelliJ but it doesn't work.
I already read some info in stackoverflow but none solved my problem, i already enabled the Annotation Processor in Intellij but still nothing.
I tryied to compile it from command-line too (Windows) and didn't work.
I also tryed to create another project without maven and add the library, create some classes for test and it works, compile and run perfectly.
Any help?
The project has only 2 class, 1 entity and 1 controller
Here is my pom.xml
<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>razor</groupId> <artifactId>controle-de-ponto</artifactId> <version>0.0.1</version> <packaging>war</packaging> <description>Um sistema de controlo de ponto</description> <repositories> <repository> <id>projectlombok.org</id> <url>http://projectlombok.org/mavenrepo</url> </repository> </repositories> <properties> <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding> <weld.version>2.1.2.Final</weld.version> </properties> <dependencies> <dependency> <groupId>br.com.caelum</groupId> <artifactId>vraptor</artifactId> <version>4.1.4</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>0.11.6</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.weld.servlet</groupId> <artifactId>weld-servlet-core</artifactId> <version>2.1.2.Final</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.weld</groupId> <artifactId>weld-core-impl</artifactId> <version>2.1.2.Final</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>el-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator-cdi</artifactId> <version>5.1.1.Final</version> </dependency> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> <!-- uncomment this line on app servers --> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-tools</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.3.8.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> <scope>runtime</scope> </dependency> <dependency> <groupId>br.com.caelum.vraptor</groupId> <artifactId>vraptor-jpa</artifactId> <version>4.0.2</version> </dependency> <dependency> <groupId>br.com.caelum.vraptor</groupId> <artifactId>vraptor-java8</artifactId> <version>4.0.0.Final</version> </dependency> </dependencies> <build> <finalName>controle-de-ponto</finalName> <!--<outputDirectory>/Users/turini/Documents/workspace/vraptor4/vraptor-blank-project/src/main/webapp/WEB-INF/classes</outputDirectory>--> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <compilerVersion>1.8</compilerVersion> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
Error when i try to compile:
[INFO] ------------------------------------------------------------------------ [INFO] Building controle-de-ponto 0.0.1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ controle-de-ponto --- [INFO] Using 'ISO-8859-1' encoding to copy filtered resources. [INFO] Copying 3 resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ controle-de-ponto --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 2 source files to C:\Users\Kennedy\Desktop\controle-de-ponto\target\classes [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /C:/Users/Kennedy/Desktop/controle-de-ponto/src/main/java/br/com/caelum/vraptor/controller/IndexController.java:[37,16] cannot find symbol symbol: method setNome(java.lang.String) location: variable usuario of type org.razor.cponto.beans.Usuario [INFO] 1 error [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.167 s [INFO] Finished at: 2015-02-04T13:41:01-02:00 [INFO] Final Memory: 17M/204M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project controle-de-ponto: Compilation failure [ERROR] /C:/Users/Kennedy/Desktop/controle-de-ponto/src/main/java/br/com/caelum/vraptor/controller/IndexController.java:[37,16] cannot find symbol [ERROR] symbol: method setNome(java.lang.String) [ERROR] location: variable usuario of type org.razor.cponto.beans.Usuario [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
-
StephaneM about 9 yearsCould you be more specific than "it didn't work"? What was the error?
-
Kennedy Oliveira about 9 yearsI edited my question with more info.
-
Kennedy Oliveira about 9 yearsthe Usuario class has the annotation @Data. And the setNome is generated by it.
-
Kennedy Oliveira about 9 years@StephaneM i added more info.
-
EpicPandaForce about 9 yearsI wonder if they made it possible to work with any IDE that is not Eclipse.
-
Kennedy Oliveira about 9 yearsi'l try to same project on eclipse to see if it builds.
-
-
Kennedy Oliveira about 9 yearsThx! Looks like was the version, i didn't see i was using an old version. Shame on me haha.
-
Admin about 9 yearsIt's more likely to be the repo: browse projectlombok.org/mavenrepo and you'll see it doesn't look like a maven repo.
-
Nabin almost 8 yearsmvn clean package and then removing the old war file. Replacing with new one. And then after deployment. Bazinga :D +1
-
aliopi over 7 yearsno, this is for replacing the Lombok annotations with equivalent source code
-
tehCivilian over 6 yearsThanks, took me hours and your solution fixed it. Working with
maven-compiler-plugin
3.6.2
andlombok
1.16.16
-
Van0SS almost 6 yearsThis works, but unexpectedly moving lombok dependency to the beginning of
<dependencies>
list also helped.maven-compiler-plugin 3.7.0
lombok 1.18.0
-
Betlista over 3 yearsAccording documentation this is for Java 9+ - projectlombok.org/setup/maven
-
Kevin Kussmaul almost 3 yearsOpened my eyes. Thanks when I added another annotation processor (for map struct) lombok stopped working and I was not realising the issue being caused by the now missing implicit declaration of the annotation processor. Took me too many hours ...
-
Admin over 2 yearsYour answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.