Jordi
Jordi

Reputation: 23277

jpamodelgen: using it with mapstruct and lombok fails silently

Here my related pom.xml snippet:

<properties>
    <java.version>11</java.version>
    <lombok.version>1.18.24</lombok.version>
    <org.mapstruct.version>1.5.2.Final</org.mapstruct.version>
    <hibernate-reactive.version>1.1.8.Final</hibernate-reactive.version>
    <hibernate-jpamodelgen.version>6.1.3.Final</hibernate-jpamodelgen.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.hibernate.reactive</groupId>
        <artifactId>hibernate-reactive-core</artifactId>
        <version>${hibernate-reactive.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.orm</groupId>
        <artifactId>hibernate-jpamodelgen</artifactId>
        <version>${hibernate-jpamodelgen.version}</version>
    </dependency>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

As you can see, I'm using lombok + mapstruct + japmodelgen.

My problem is that metamodel is not generated but I'm not getting any reason or message about. It seems it's failing silently.

My entity class is annotated using javax.persistence.* annotations:

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "GITTBQDCF")
public class QdCF {
   //...
}

I've also tested with several configurations of maven-compiler-plugin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.10.1</version>
    <configuration>
        <release>${java.version}</release>
        <showWarnings>true</showWarnings>
        <verbose>true</verbose>
        <annotationProcessorPaths>
            <annotationProcessorPath>
                <groupId>org.hibernate.orm</groupId>
                <artifactId>hibernate-jpamodelgen</artifactId>
                <version>${hibernate-jpamodelgen.version}</version>
            </annotationProcessorPath>
            <annotationProcessorPath>
                <groupId>org.projectlombok</groupId>
                <version>${lombok.version}</version>
                <artifactId>lombok</artifactId>
            </annotationProcessorPath>
            <annotationProcessorPath>
                <groupId>org.projectlombok</groupId>
                <version>0.2.0</version>
                <artifactId>lombok-mapstruct-binding</artifactId>
            </annotationProcessorPath>
            <annotationProcessorPath>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>${org.mapstruct.version}</version>
            </annotationProcessorPath>
        </annotationProcessorPaths>
    </configuration>
</plugin>

However, static meta model class QdCF_ is not generated:

$ mvn compile
.....
.....
[WARNING] system modules path not set in conjunction with -source 11
[INFO] Hibernate JPA 2 Static-Metamodel Generator 6.1.3.Final
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  20.099 s
[INFO] Finished at: 2022-10-04T10:43:16+02:00
[INFO] ------------------------------------------------------------------------

I’ve only been able to get above message:

[INFO] Hibernate JPA 2 Static-Metamodel Generator 6.1.3.Final.

Nothing more. I don't quite figure out what I'm doing wrong...

Any ideas?

Could I enable some kind of additional helping jpamodelgen logging?

Upvotes: 2

Views: 1672

Answers (3)

hwak
hwak

Reputation: 320

I have the same configuration and same problem. next command helped explain reason for my error:

mvn compiler:compile

Upvotes: 0

peri purnama
peri purnama

Reputation: 61

it works for me

   <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>com.github.therapi</groupId>
                            <artifactId>therapi-runtime-javadoc-scribe</artifactId>
                            <version>0.15.0</version>
                        </path>
                        <annotationProcessorPath>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>1.18.24</version>
                        </annotationProcessorPath>
                    </annotationProcessorPaths>

                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.bsc.maven</groupId>
                <artifactId>maven-processor-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <id>process</id>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <phase>generate-sources</phase>
                        <configuration>
                            <processors>
                                <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
                            </processors>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.hibernate</groupId>
                        <artifactId>hibernate-jpamodelgen</artifactId>
                        <version>5.4.3.Final</version>
                    </dependency>


                </dependencies>
            </plugin>
        </plugins>
    </build>

Upvotes: 0

linxux
linxux

Reputation: 31

Same issue with Gradle, and the repo contains: Mapstruct + Lombok + Hibernate-jpamodelgen. And will try Delombok later.

> Task :compileJava
Note: Hibernate JPA 2 Static-Metamodel Generator 6.1.5.Final
BUILD SUCCESSFUL in 42s
1 actionable task: 1 executed

Have you try to configure the processor orders in maven?

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArguments>
            <processor>
                lombok.launch.AnnotationProcessorHider$AnnotationProcessor,org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor
            </processor>
        </compilerArguments>
    </configuration>
</plugin>

Upvotes: 2

Related Questions