/** @return Returns the full path of the original chop-runner jar file in the local maven repository */ public String getRunnerInLocalRepo() { String path = localRepository; Artifact chopPluginArtifact = plugin.getPluginArtifact(); path += "/" + chopPluginArtifact.getGroupId().replace( '.', '/' ) + "/chop-runner/" + chopPluginArtifact.getVersion() + "/chop-runner-" + chopPluginArtifact.getVersion() + ".jar"; return path; }
private void createPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent, Map<String, ClassLoader> foreignImports, DependencyFilter filter ) throws PluginResolutionException, PluginContainerException { Plugin plugin = Objects.requireNonNull( pluginDescriptor.getPlugin(), "pluginDescriptor.plugin cannot be null" ); Artifact pluginArtifact = Objects.requireNonNull( pluginDescriptor.getPluginArtifact(), "pluginDescriptor.pluginArtifact cannot be null" ); MavenProject project = session.getCurrentProject(); final ClassRealm pluginRealm; final List<Artifact> pluginArtifacts; RepositorySystemSession repositorySession = session.getRepositorySession(); DependencyFilter dependencyFilter = project.getExtensionDependencyFilter(); dependencyFilter = AndDependencyFilter.newInstance( dependencyFilter, filter ); DependencyNode root = pluginDependenciesResolver.resolve( plugin, RepositoryUtils.toArtifact( pluginArtifact ), dependencyFilter, project.getRemotePluginRepositories(), repositorySession ); PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); root.accept( nlg ); pluginArtifacts = toMavenArtifacts( root, nlg ); pluginRealm = classRealmManager.createPluginRealm( plugin, parent, null, foreignImports, toAetherArtifacts( pluginArtifacts ) ); discoverPluginComponents( pluginRealm, plugin, pluginDescriptor ); pluginDescriptor.setClassRealm( pluginRealm ); pluginDescriptor.setArtifacts( pluginArtifacts ); }
protected static PluginDescriptor clone( PluginDescriptor original ) { PluginDescriptor clone = null; if ( original != null ) { clone = new PluginDescriptor(); clone.setGroupId( original.getGroupId() ); clone.setArtifactId( original.getArtifactId() ); clone.setVersion( original.getVersion() ); clone.setGoalPrefix( original.getGoalPrefix() ); clone.setInheritedByDefault( original.isInheritedByDefault() ); clone.setName( original.getName() ); clone.setDescription( original.getDescription() ); clone.setRequiredMavenVersion( original.getRequiredMavenVersion() ); clone.setPluginArtifact( ArtifactUtils.copyArtifactSafe( original.getPluginArtifact() ) ); clone.setComponents( clone( original.getMojos(), clone ) ); clone.setId( original.getId() ); clone.setIsolatedRealm( original.isIsolatedRealm() ); clone.setSource( original.getSource() ); clone.setDependencies( original.getDependencies() ); } return clone; }
/** * This plugin MOJO artifact. * * @return non-null plugin artifact */ protected Artifact getMojoArtifact() { return pluginDescriptor.getPluginArtifact(); }
private String getPluginClasspath() throws ArtifactResolutionException, ArtifactNotFoundException { Set<Artifact> artifacts = new HashSet<Artifact>(1); artifacts.add(pluginDesc.getPluginArtifact()); // we need the dummy artifact here so that maven actually resolves the // plugin's dependencies for us and returns them in the result object Artifact originatingArtifact = artifactFactory.createBuildArtifact( "dummy", "dummy", "1.0", "jar" ); ArtifactResolutionResult result = resolver.resolveTransitively(artifacts, originatingArtifact, remoteRepositories, localRepository, artifactMetadataSource); StringBuilder classpath = new StringBuilder(); for (Object obj : result.getArtifacts()) { Artifact curArtifact = (Artifact)obj; if (classpath.length() > 0) { classpath.append(File.pathSeparatorChar); } classpath.append(curArtifact.getFile().getAbsolutePath()); } return classpath.toString(); } }
private void unpackFileBasedResources() throws MojoExecutionException { if ( mojoExecution == null || mavenProject == null ) { unconstructedParts.add( "Unpacked Ant build scripts (in Maven build directory)." ); return; } // What we need to write out any resources in the plugin to the target directory of the // mavenProject using the Ant-based plugin: // // 1. Need a reference to the plugin JAR itself // 2. Need a reference to the ${basedir} of the mavenProject PluginDescriptor pluginDescriptor = mojoExecution.getMojoDescriptor().getPluginDescriptor(); File pluginJar = pluginDescriptor.getPluginArtifact().getFile(); String resourcesPath = pluginDescriptor.getArtifactId(); File outputDirectory = new File( mavenProject.getBuild().getDirectory() ); try { UnArchiver ua = new ZipUnArchiver( pluginJar ); ua.extract( resourcesPath, outputDirectory ); } catch ( ArchiverException e ) { throw new MojoExecutionException( "Error extracting resources from your Ant-based plugin.", e ); } }
private void unpackFileBasedResources() throws MojoExecutionException { if ( mojoExecution == null || mavenProject == null ) { unconstructedParts.add( "Unpacked Ant build scripts (in Maven build directory)." ); return; } // What we need to write out any resources in the plugin to the target directory of the // mavenProject using the Ant-based plugin: // // 1. Need a reference to the plugin JAR itself // 2. Need a reference to the ${basedir} of the mavenProject PluginDescriptor pluginDescriptor = mojoExecution.getMojoDescriptor().getPluginDescriptor(); File pluginJar = pluginDescriptor.getPluginArtifact().getFile(); String resourcesPath = pluginDescriptor.getArtifactId(); File outputDirectory = new File( mavenProject.getBuild().getDirectory() ); try { UnArchiver ua = new ZipUnArchiver( pluginJar ); ua.extract( resourcesPath, outputDirectory ); } catch ( ArchiverException e ) { throw new MojoExecutionException( "Error extracting resources from your Ant-based plugin.", e ); } }
mojoExecution.getMojoDescriptor().getPluginDescriptor().getPluginArtifact()); ArtifactVersion versionInUse = artifact.getVersionRange().getRecommendedVersion(); ArtifactRepositoryMetadata repositoryMetadata = new ArtifactRepositoryMetadata(artifact);
private CharSequence resolveExternalJreVersion() { Artifact pluginArtifact = mojoExecution.getMojoDescriptor().getPluginDescriptor().getPluginArtifact(); pluginArtifact.getFile(); Commandline commandLine = new Commandline(); commandLine.setExecutable( new File( javaHome, "bin/java" ).getAbsolutePath() ); commandLine.createArg().setValue( "-cp" ); commandLine.createArg().setFile( pluginArtifact.getFile() ); commandLine.createArg().setValue( SystemPropertyPrinter.class.getName() ); commandLine.createArg().setValue( "java.version" ); final StringBuilder actualJreVersion = new StringBuilder(); StreamConsumer consumer = new StreamConsumer() { public void consumeLine( String line ) { actualJreVersion.append( line ); } }; try { CommandLineUtils.executeCommandLine( commandLine, consumer, null ); } catch ( CommandLineException e ) { getLog().warn( e.getMessage() ); } return actualJreVersion; }