quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.82k stars 2.69k forks source link

Extensions should be Jandex'd #6477

Open dmlloyd opened 4 years ago

dmlloyd commented 4 years ago

We are talking about adding more annotation-based discovery of things from extensions. We should consider using Jandex on extensions as a primary source of extension metadata.

Doing so improves extension forward compatibility because extension metadata would use the annotation compatibility model, which is well-understood. It should be able to reduce - or maybe even eliminate - the amount of external metadata that we have to package with extensions. It will reduce the amount of work having to be done in the extension annotation processor.

Since we have an ecosystem of extensions which do not presently have Jandex indexes, we'd have to allow for cases where the index is missing (maybe index the JAR on demand, or just support two methods of metadata assembly on an ad-hoc basis). We'd want to deprecate any metadata that is duplicated by Jandex.

gastaldi commented 4 years ago

Would it be enough to add the jandex plugin to build-parent/pom.xml?

            <plugin>
                <groupId>org.jboss.jandex</groupId>
                <artifactId>jandex-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>index</id>
                        <goals>
                            <goal>jandex</goal>
                        </goals>
                        <inherited>true</inherited>
                    </execution>
                </executions>
            </plugin>
dmlloyd commented 4 years ago

I think so. I'm not sure if third-party extensions are meant to use that though?

gastaldi commented 4 years ago

Probably not. Ideally it would be nice to have an extension-parent pom for cases like that

geoand commented 2 years ago

I think that at this point, we probably don't want to do this as it could lead to unexpected breaks (as additional classes find their way into the index)