en mi aplicación tengo 3 módulos como este:
permissions (parent pom) |---permission-api (just api, without main spring class) |---permission-service (spring boot app)En pom padre en el módulo principal tengo pom que contiene:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <modules> <module>permissions-api</module> <module>permissions-service</module> </modules>y algunas dependencias. Ahora quiero construir todo mi proyecto con maven clean install. El módulo Permission-api está construido (no hay problema con las anotaciones de lombok). En pom, la única referencia a lombok es:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>De todos modos, cuando trato de compilar solo el servicio de permisos o el proyecto completo, tengo errores de compilación como este:
cannot find symbol [ERROR] symbol: method getPermissionsList() [ERROR] location: variable employee of type permissions.model.entity.EmployeeSé que debería agregar maven-compiler-plugin a pom.xml (también traté de agregar esto al pom principal) y lo hice, pero no ayuda:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <configuration> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>¿Puedes decirme qué estoy haciendo mal?
La dependencia, como en projectlombok.org , debe estar en el ámbito 'provisto', lo que significa que solo se requiere para la compilación, pero no se necesita en tiempo de ejecución:
<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> <scope>provided</scope> </dependency> </dependencies>Esto debería ser suficiente.
Mientras tanto encontré una solución. Todo comenzó a funcionar cuando agrego:
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-envers</artifactId> <version>${hibernate.version}</version> </dependency>Probablemente esa dependencia faltante estaba causando el primer error de compilación y el compilador maven mostró incorrectamente las siguientes "anotaciones faltantes" de lombok como errores de compilación también.
Cuando usa true opcional, está evitando que la dependencia se transfiera a sus hijos de forma transitiva. Eliminar opcional y debería estar bien.
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>