private PlexusContainer createContainer(Class<?> baseClass, Module... modules) { log.info("Creating container; baseClass: {}, modules: {}", baseClass, modules); Map<Object, Object> context = new HashMap<>(); context.put("basedir", getBasedir()); context.putAll(getTestProperties()); boolean hasPlexusHome = context.containsKey("plexus.home"); if (!hasPlexusHome) { File f = new File(getBasedir(), "target/plexus-home"); if (!f.isDirectory()) { f.mkdir(); } context.put("plexus.home", f.getAbsolutePath()); } // log.info("Context:"); // for (Entry<Object,Object> entry : context.entrySet()) { // log.info(" {}={}", entry.getKey(), entry.getValue()); // } String plexusXml = baseClass.getName().replace('.', '/') + ".xml"; log.info("Plexus XML: {}", plexusXml); ContainerConfiguration containerConfiguration = new DefaultContainerConfiguration(); containerConfiguration.setName("test"); containerConfiguration.setContext(context); containerConfiguration.setContainerConfiguration(plexusXml); containerConfiguration.setAutoWiring(true); containerConfiguration.setClassPathScanning(PlexusConstants.SCANNING_INDEX); try { return new DefaultPlexusContainer(containerConfiguration, modules); } catch (PlexusContainerException e) { log.error("Failed to create container", e); fail("Failed to create container"); return null; } }