maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason van Zyl <>
Subject Re: Running tests using failsafe from a shaded jar?
Date Mon, 23 Nov 2015 13:22:51 GMT

You’ll notice if you look at the source that it’s a JSR330 component. So there is a the
sisu-maven-plugin which generates a META-INF/sisu/javax.inject.Named as part of the build.
You will want to look in your shaded JAR and make sure you have one of those files, I’m
not certain if there is a resource transformer that deals with this file so you might have
to make one of those. I say might because it depends on how you start up the container for
Maven. If you don’t particularly care about startup speed you can make the container scan
the classpath and it will create all the bindings from the classes in the scan. By default
in Maven we get the container to use the index file cited above because it’s much faster
at creating all the bindings. Your error results from there being no binding for the DefaultClassRealmManager
so it’s likely not finding the javax.inject.Named file.

If you look at some of the test cases[1] in maven-core you’ll see where the container is
created and see how the scanning behaviour is changed. To try something quickly you can just
turn the classpath scanning on and see if it’s fast enough. You might also have to lift
a few bits from the PlexusTestCase class itself but it’s very similar to how the container
if created in the MavenCli class which also serves as an example.


> On Nov 22, 2015, at 2:03 AM, Mirko Friedenhagen <> wrote:
> Hello Stephen, I will share how to do this in general. As it it not as easy
> as I hoped I will firstly extract a POC project and share that on GitHub
> immediately with the risk of never succeeding :-)
> Regards
> Mirko
> -- 
> Sent from my mobile
> Am 21.11.2015 23:34 schrieb "Stephen Connolly" <
>> If you get this working, any chance you could share your work?
>> On 21 November 2015 at 21:20, Mirko Friedenhagen <>
>> wrote:
>>> Hello,
>>> I want to use to run tests on machine, where Maven is not installed
>>> and access to a repository is not allowed.
>>> However I want to (ab-)use the failsafe plugin so I may use the fine
>>> machinery which allows to specify tests and get XML reports.
>>> Using maven-embedded I created an App class which just runs
>>> failsafe:integration tests, all dependencies are found in a shaded
>>> jar.
>>> I already used
>>> org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformer
>>> so a complete looking META-INF/plexus/components.xml is created.
>>> When I start the jar with java -jar MY_SHADED_JAR.jar I always get the
>>> following error:
>>> 22:09:57.365 [main] WARN  Sisu - Error injecting:
>>> org.apache.maven.project.DefaultProjectBuildingHelper
>>> Unable to provision, see the
>>> following errors:
>>> 1) No implementation for org.apache.maven.classrealm.ClassRealmManager
>>> was bound.
>>>  while locating org.apache.maven.project.DefaultProjectBuildingHelper
>>> Looking into components.xml DefaultClassRealmManager is not there but
>>> is referenced twice.
>>> Grepping through the components.xml files in a Maven installation, I
>>> do not see where the DefaultClassRealmManager is instantiated.
>>> Regards Mirko
>>> --
>>> (
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail:
>>> For additional commands, e-mail:



Jason van Zyl
Founder, Takari and Apache Maven

Simplex sigillum veri. (Simplicity is the seal of truth.)

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message