Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jdt-core-dev] Apt processor handling

Igor, regarding some of the limitations you state:

* Likewise, all all annotation processors work on all project sources,
which makes support for Maven main/test sources impossible.
* It is not possible to control which processors will be used for a
project, Eclipse unconditionally runs all processors it finds on
processor path

These are consequences of implementing the JSR269 specification.  I *wish* that the first was not true, because it makes it essentially impossible to write a performant annotation processor.  (Actually it is not just all project sources, it is also on all jars in the project classpath.)  And I *wish* that the second was not true, because annotation processors often don't play well together.  But there is no way to implement the spec without these things being true, as far as I know.

On Thu, Sep 29, 2016 at 9:52 AM, Igor Fedorenko <igor@xxxxxxxxxxxxxx> wrote:
My list of problems with Eclipse built-in annotation processing support
is longer

* Due to a bug in annotation processing jsr, a class of annotation
processors cannot be supported by incremental build environment like
Eclipse. I have couple of ideas how to improve this, but didn't really
have time to work on them yet.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=447546
* Some annotation processors fail to report "originating" elements when
calling Filer #createNNN methods.  This makes such processors
incompatible with incremental build.

* It is not possible to have multiple generated sources/resources
locations per project, which is required to support Maven and I assume
other modern build systems.
* Likewise, all all annotation processors work on all project sources,
which makes support for Maven main/test sources impossible.
* It is not possible to control which processors will be used for a
project, Eclipse unconditionally runs all processors it finds on
processor path.

>From my experience, these limitations make Eclipse's built-in annotation
processing support unusable for all but the most simple projects. We had
to develop alternative approach to integrate annotation processors in
Eclipse.

--
Regards,
Igor

On Thu, Sep 29, 2016, at 07:58 AM, Lars Vogel wrote:
> Dear JDT core developers,
>
> A fellow Java champion pointed out to me that the annotation
> processing setup in Eclipse is very complex compared to other IDEs.
> Here is what we wrote me (slightly reworked for readability):
>
> QUOTE_BEGIN
> ------------
> - NetBeans automatically finds APT JARs in the classpath. You can't
> turn it off. You can't tweak any settings.
> - IntelliJ  allows to activate APT processing (per project) with a
> checkbox; this will find all available APT JARs in the classpath by
> default. You can also configure which JARs may be used.
> - Eclipse forces you to locate and define every APT JAR by hand, per
> project.
>
> This means NB is on one side of the spectrum (fully automatic) where
> Eclipse is at the opposite side (fully manual), while Intellij sits
> somewhere in between.
>
> Example instructions for all IDEs can be found at
> http://griffon-framework.org/tutorials/1_getting_started.html#_tutorial_1_4
> ------------
> QUOTE_END
>
> I have not used apt-processors myself in Eclipse but this setup sounds
> relatively complex compared to the other alternatives.
>
> Are there plans to improve this? Without knowing the technical details
> here, maybe a "Search in project classpath" option could be added?
>
> If I understood him correctly, several customers are selecting NB or
> IntelliJ because of that complex Eclipse setup and I promised him to
> to ping the JDT developers about this.
>
> Best regards, Lars
> --
> Eclipse Platform UI and e4 project co-lead
> CEO vogella GmbH
>
> Haindaalwisch 17a, 22395 Hamburg
> Amtsgericht Hamburg: HRB 127058
> Geschäftsführer: Lars Vogel, Jennifer Nerlich de Vogel
> USt-IdNr.: DE284122352
> Fax (040) 5247 6322, Email: lars.vogel@xxxxxxxxxxx, Web:
> http://www.vogella.com
> _______________________________________________
> jdt-core-dev mailing list
> jdt-core-dev@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/jdt-core-dev
> Email had 1 attachment:
> + annotation_processing.png
>   110k (image/png)
_______________________________________________
jdt-core-dev mailing list
jdt-core-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jdt-core-dev


Back to the top