Is there any special copnfiguration to get eclipse to generate the Mapstruct mappers? Curently they are not being generated.
They do generate in a gradle build but I cannot get them to generate so I can use them in development.
I added this to my build.gradle:
plugins {
id "net.ltgt.apt" version "0.10"
}
dependencies {
compile "org.mapstruct:mapstruct-jdk8:$mapstructVersion"
apt "org.mapstruct:mapstruct-processor:$mapstructVersion"
}
I also added the eclipse plugin for MapStruct (although I belive that this is not actually required???)
I then went Project > Properties > Java Compiler > Annotation Processing:
But .apt_generated is empty, what am I missing?
I'm using:
Eclipse: Version: Oxygen Release (4.7.0) Build id: 20170620-1800
MapStruct version 1.2.0.CR1 (also tries 1.1.0.FINAL)
So after a bit of searching I determined that the solution is that you have to manually run the eclipse
task in gradle. You should then see similar to the following if it is successful:
The solution came from reading https://github.com/tbroyer/gradle-apt-plugin docs which states:
When using Buildship, you'll have to manually run the eclipseJdtApt and eclipseFactorypath tasks to generate the Eclipse configuration files, then either run the eclipseJdt task or manually enable annotation processing: in the project properties → Java Compiler → Annotation Processing, check Enable Annotation Processing. Note that while all those tasks are depended on by the eclipse task, that one is incompatible with Buildship, so you have to explicitly run the two or three aforementioned tasks and not run the eclipse task.
It states that the eclipse
task is incompatible with buildship but that seems to be fixed (I ran the eclipse
task and had no issues):
I did however have issues with the cleanEclipse
task which does seem to be incompatible with Buildship.
After all this the *MapperImpl.java
classes are generated in <project_root>/.apt_generated
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With