Migrated from Google Code (issue 775)
👤 firstname.lastname@example.org 🕗 Jan 27, 2015 at 06:20 UTC
I'm trying to update the lombok-maven-plugin for the 1.16.0 release and am running into a build problem:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project lombok-maven-plugin: Compilation failure: Compilation failure:
[ERROR] /Users/anthony/Documents/lombok.maven/lombok-maven-plugin/src/main/java/lombok/maven/AbstractDelombokMojo.java:[19,23] package lombok.delombok does not exist
[ERROR] /Users/anthony/Documents/lombok.maven/lombok-maven-plugin/src/main/java/lombok/maven/AbstractDelombokMojo.java:[20,32] package lombok.delombok.Delombok does not exist
It looks like the classes were renamed:
My code needs to import Delombok, but how can it given the rename? (I'm surprised that the extension doesn't need to be .class.)
How does your AntTask deal with this?
👤 r.spilker 🕗 Jan 27, 2015 at 12:35 UTC
Hmm, I don't know if we updated that one :-)
I don't have an exact solution but you need to use lombok.launch.Main﹟createShadowClassLoader() or similar code to create a classloader that's aware of the SCL.lombok files, and use Class.forName on that classloader to load your own code.
I think you either need to use reflection or have at least one of your classes in the same package since all (or at least most) of the code involved is package private.
We will need to consider a public API, and also update the AntTask.
👤 email@example.com 🕗 Jan 28, 2015 at 09:42 UTC
OK, it was a bit of a pain, but I think I got this working based on your advice. Thanks.
BTW... I thought that this kind of obfuscation was not necessary with OSGi.
👤 reinierz 🕗 Jan 30, 2015 at 02:43 UTC
OSGi makes this kind of obfuscation mostly unneccessary, but we can't very well demand OSGi from all our users, so we went with this solution. Unlike OSGi, the shadowloader doesn't have any restrictions.
👤 reinierz 🕗 Jan 30, 2015 at 02:47 UTC
ant task now fixed with full hiding, though regrettably the ant task classname has been changed, which isn't backwards compatible.
Fixed in 8ed49ce
End of migration
Fix for issue #810