/** * TODO pluginDescriptor classRealm and artifacts are set as a side effect of this * call, which is not nice. * @throws PluginResolutionException */ public ClassRealm getPluginRealm( MavenSession session, PluginDescriptor pluginDescriptor ) throws PluginResolutionException, PluginManagerException { ClassRealm pluginRealm = pluginDescriptor.getClassRealm(); if ( pluginRealm != null ) { return pluginRealm; } mavenPluginManager.setupPluginRealm( pluginDescriptor, session, null, null, null ); return pluginDescriptor.getClassRealm(); }
public Object getPluginComponent( Plugin plugin, String role, String roleHint ) throws PluginManagerException, ComponentLookupException { MavenSession session = legacySupport.getSession(); PluginDescriptor pluginDescriptor; try { pluginDescriptor = pluginManager.getPluginDescriptor( plugin, session.getCurrentProject().getRemotePluginRepositories(), session.getRepositorySession() ); pluginManager.setupPluginRealm( pluginDescriptor, session, null, null, null ); } catch ( Exception e ) { throw new PluginManagerException( plugin, e.getMessage(), e ); } ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader( pluginDescriptor.getClassRealm() ); return container.lookup( role, roleHint ); } finally { Thread.currentThread().setContextClassLoader( oldClassLoader ); } }
public Map<String, Object> getPluginComponents( Plugin plugin, String role ) throws ComponentLookupException, PluginManagerException { MavenSession session = legacySupport.getSession(); PluginDescriptor pluginDescriptor; try { pluginDescriptor = pluginManager.getPluginDescriptor( plugin, session.getCurrentProject().getRemotePluginRepositories(), session.getRepositorySession() ); pluginManager.setupPluginRealm( pluginDescriptor, session, null, null, null ); } catch ( Exception e ) { throw new PluginManagerException( plugin, e.getMessage(), e ); } ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader( pluginDescriptor.getClassRealm() ); return container.lookupMap( role ); } finally { Thread.currentThread().setContextClassLoader( oldClassLoader ); } }
ClassRealm pluginRealm = pluginDescriptor.getClassRealm();
pluginRealmCache.put( cacheKey, pluginDescriptor.getClassRealm(), pluginDescriptor.getArtifacts() );
final PluginDescriptor pluginDescriptor = (PluginDescriptor) getPluginContext().get("pluginDescriptor"); final ClassRealm classRealm = pluginDescriptor.getClassRealm(); final File classes = new File(getProject().getBuild().getOutputDirectory()); try { classRealm.addURL(classes.toURI().toURL()); } catch (MalformedURLException e) { e.printStackTrace(); }
private void extendClassLoader() throws DuplicateRealmException, MalformedURLException { ClassRealm realm = descriptor.getClassRealm(); if (realm == null) { ClassWorld world = new ClassWorld(); realm = world.newRealm("maven.plugin." + getClass().getSimpleName(), Thread .currentThread().getContextClassLoader()); } File cls = new File(buildDir + File.separator + DEFAULT_CLASSES_DIRECTORY); File testCls = new File(buildDir + File.separator + DEFAULT_TEST_CLASSES_DIRECTORY); realm.addURL(cls.toURI().toURL()); realm.addURL(testCls.toURI().toURL()); Thread.currentThread().setContextClassLoader(realm); }
@Mojo( name = "run", threadSafe = true, requiresDependencyResolution = ResolutionScope.TEST ) public class CustomAntMojo extends AntRunMojo { @Component private PluginDescriptor pluginDescriptor; public void execute() throws MojoExecutionException { File buildDirectory = new File( getMavenProject().getBuild().getOutputDirectory() ); // add the build directory to the classpath for the classloader try { ClassRealm realm = pluginDescriptor.getClassRealm(); realm.addURL(buildDirectory.toURI().toURL()); } catch (MalformedURLException e1) { e1.printStackTrace(); } // configure the log4j logger to output the ant logs to the maven log BasicConfigurator.configure( new MavenLoggerLog4jBridge(getLog())); super.execute(); } }
private ClassRealm getClassRealm() throws DependencyResolutionRequiredException, MalformedURLException { if (classRealm == null) { List<String> runtimeClasspathElements = project.getRuntimeClasspathElements(); classRealm = descriptor.getClassRealm(); if (classRealm == null) { classRealm = project.getClassRealm(); } for (String element : runtimeClasspathElements) { File elementFile = new File(element); classRealm.addURL(elementFile.toURI().toURL()); } } return classRealm; }
public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Running schema generation..."); if (isNull(jpaProperties)) { jpaProperties = new Properties(); } if (outputPath == null) { if (action == Action.UPDATE) { outputPath = Paths.get(project.getBuild().getDirectory()).resolve("generated-resources/scripts").toFile(); } else { outputPath = Paths.get(project.getBuild().getDirectory()).resolve("generated-resources/scripts/database.sql").toFile(); } } SchemaGenerator schemaGenerator = new SchemaGenerator(); List<String> compileSourceRoots = project.getCompileSourceRoots(); compileSourceRoots.stream().map(this::mapPathToURL).forEach(url -> descriptor.getClassRealm().addURL(url)); try { project.getCompileClasspathElements().stream().map(this::mapPathToURL).forEach(url -> descriptor.getClassRealm().addURL(url)); } catch (DependencyResolutionRequiredException e) { throw new IllegalStateException(e); } GeneratorSettings settings = new GeneratorSettings( generationMode, outputPath, packages, action, jpaProperties, formatOutput, delimiter, skipSequences); try { schemaGenerator.generate(settings); getLog().info("Schema saved to " + outputPath); } catch (Exception e) { throw new MojoExecutionException(e.getMessage(), e); } }
private Class<?> getMojoClass(MojoDescriptor md, PluginDescriptor pd) throws ClassNotFoundException { try { return pd.getClassRealm().loadClass( md.getImplementation() ); } catch (NoSuchMethodError e) { // maybe we are in maven2 build ClassRealm package has changed return getMojoClassForMaven2( md, pd ); } }
private Class<?> getMojoClass(MojoDescriptor md, PluginDescriptor pd) throws ClassNotFoundException { try { ClassRealm classRealm = pd.getClassRealm(); return classRealm == null ? null : classRealm.loadClass( md.getImplementation() ); } catch (NoSuchMethodError e) { // maybe we are in maven2 build ClassRealm package has changed return getMojoClassForMaven2( md, pd ); } }
if (toolsJar.exists()) { try { pluginDescriptor.getClassRealm().addURL(toolsJar.toURI().toURL()); } catch (final IOException e) { logger.warn("Unable to add tools.jar; " + toolsJar);
if (toolsJar.exists()) { try { pluginDescriptor.getClassRealm().addURL(toolsJar.toURI().toURL()); } catch (final IOException e) { logger.warn("Unable to add tools.jar; " + toolsJar);
cl = cr.getClassLoader(); } else { cl = mojoExecution.getMojoDescriptor().getPluginDescriptor().getClassRealm();
cl = cr.getClassLoader(); } else { cl = mojoExecution.getMojoDescriptor().getPluginDescriptor().getClassRealm();