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