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

Reply via email to