(I know there has been some discussion on the topic (old community AS7-dev postings, IRC-chat with Tomaz Cerar etc)

     Hanging around the forums, I've noticed that a frequent source of hard-to-debug deployment problems and other non-linear-behavior is that people often try to deploy archives with conflicting dependencies (various EE APIs/impls already on the AS, JDBC drivers, maven plugins, you name it). 

    Would it be worthwhile to implement a deployment processor (disabled by default) that would act as a helpful bouncer for the deployment archive? We could have a simple isSane(Archive) interface or something and people could write their own implementations (that would be picked up through the java services system or listed explicitly in some module?). Default implementation that come to mind is

* Blacklisted packages (using Tattletale to warn users if they are bundling e.g. EE impls/APIs)
* Version limiter (using Tattletale to warn if deployment contains too old version of lib, e.g. Spring)
* Unused libs (using Tattletale to warn if deployment contains unused jars)
* Server provided libs (using Tattletale and JBoss Modules) to show which dependencies could be handled by a server module dependency)

I'm not sure JBoss Modules contains any "directory" for which-modules-provides functionality but I guess the module root could be scanned and the resources indexed or something. Performance would not be an issue because it's still going to be faster that a user playing around with dependencies for days.

Thoughts?

--
Nicklas Karlsson, +358 40 5062266
Vaakunatie 10 as 7, 20780 Kaarina