We've chatted occasionally on creating a scanning.xml file where people could
setup includes and excludes and, overall, optimize classpath scanning.
Romain is already busy hacking of course :) Here's the idea for a plugin to
effectively do the most expensive part of scanning in advance:
<plugin>
<groupId>org.apache.xbean</groupId>
<artifactId>maven-xbean-finder-plugin</artifactId>
<configuration>
<annotations>
<annotation>javax.ejb.Stateless</annotation>
<annotation>javax.ejb.Stateful</annotation>
<annotation>javax.ejb.Singleton</annotation>
<annotation>javax.annotation.ManagedBean</annotation>
</annotations>
<subclasses>
<subclass>javax.ws.rs.core.Application</subclass>
</subclasses>
<implementations>
<implementation>org.apache.openejb.server.ServerService</implementation>
</implementations>
</configuration>
</plugin>
With a configuration like the above, the plugin would scan the jar for
subclasses of javax.ws.rs.core.Application, classes annotated with @Stateless,
@Singleton, @Stateful and classes that implement ServiceService.
The result would be a META-INF/scan.xml class that looks like so:
<scan>
<classes>
<class>org.superbiz.Foo</class>
<class>org.superbiz.Bar</class>
<class>org.superbiz.Baz</class>
</classes>
</scan>
And on the TODO list would be future support for <packages>
<scan>
<packages>
<package>org.superbiz.foo</package>
<package>org.superbiz.bar</package>
</packages>
</scan>
With the above you could easily create scan.xml file by hand that would at
least be far faster than scanning an entire jar.
Thoughts?
-David