DEV Community

Nahuel Tisera
Nahuel Tisera

Posted on

¿@Builder de Lombok no funciona? Acá la solución que me salvó

Hoy me topé con un error bastante molesto mientras trabajaba en un proyecto Java con Spring Boot y Lombok.
Todo parecía estar bien con el código, pero la compilación lanzaba este mensaje:

java: no se puede encontrar el símbolo builderClass

Investigando el problema

Después de revisar varias veces el código, descubrí que el problema no era por cómo usaba Lombok, sino por una mala configuración del pom.xml en mi proyecto Maven.

🔍 ¿Qué estaba mal?

  • No tenía bien configurado el maven-compiler-plugin.
  • Además, por alguna razón, en el spring-boot-maven-plugin se estaba excluyendo Lombok.

Eso hizo que las anotaciones como @builder no fueran reconocidas al compilar.

<!-- Ejemplo de configuración problemática -->
<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <executions>
    <execution>
      <!-- Excluyendo lombok accidentalmente -->
      <configuration>
        <excludes>
          <exclude>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
          </exclude>
        </excludes>
      </configuration>
    </execution>
  </executions>
</plugin>
Enter fullscreen mode Exit fullscreen mode

✅ ¿Cómo lo solucioné?

Bastó con corregir el maven-compiler-plugin, agregar la versión correcta de Java y configurar el annotationProcessorPaths.

Acá te dejo un ejemplo de configuración funcional

<!-- Solución al método builder -->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.1</version>
  <configuration>
    <annotationProcessorPaths>
      <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.28</version>
      </path>
      <path>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
      </path>
    </annotationProcessorPaths>
    <release>${java.version}</release>
  </configuration>
</plugin>
Enter fullscreen mode Exit fullscreen mode

También me aseguré de que Lombok no esté siendo excluido por ningún plugin. Una vez hecho eso, todo funcionó perfecto: @builder volvió a hacer su magia 💫

🙌 Conclusión

A veces el problema no está en el código, sino en la configuración.
Si estás usando Lombok y te pasa algo similar, revisá tu pom.xml.

Ojalá esta experiencia te ayude a evitar dolores de cabeza ✌️

Top comments (0)