Skip to content

Commit

Permalink
Add 2nd mojo
Browse files Browse the repository at this point in the history
  • Loading branch information
cstamas committed Mar 9, 2024
1 parent 1301c5d commit a6af792
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,12 @@
import java.util.Locale;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.collection.CollectResult;
import org.eclipse.aether.collection.DependencyCollectionException;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.resolution.ArtifactDescriptorException;
import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
import org.eclipse.aether.resolution.ArtifactDescriptorResult;
import org.eclipse.aether.util.graph.visitor.DependencyGraphDumper;

@Mojo(name = "gav-tree", requiresProject = false, threadSafe = true)
Expand All @@ -37,54 +32,27 @@ public class GavTreeMojo extends AbstractMojo {
@Parameter(property = "scope", defaultValue = "runtime", required = true)
private String scope;

/**
* Set it {@code true} for "as project" mode.
*/
@Parameter(property = "asProject", defaultValue = "false", required = true)
private boolean asProject;

/**
* Set it {@code true} for verbose tree.
*/
@Parameter(property = "verbose", defaultValue = "false", required = true)
private boolean verbose;

@Override
public void execute() throws MojoExecutionException, MojoFailureException {
public void execute() throws MojoExecutionException {
Runtime runtime = Runtimes.INSTANCE.getRuntime();
try (Context context = runtime.create(ContextOverrides.create().build())) {
Toolbox toolbox = new ToolboxImpl(context.repositorySystem());
Toolbox.ResolutionScope resolutionScope =
Toolbox.ResolutionScope.valueOf(scope.toUpperCase(Locale.ENGLISH));
CollectResult collectResult;
if (asProject) {
Artifact artifact = new DefaultArtifact(gav);

// for test only: "as project" means we use MavenProject, here it is just simulated
ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest();
descriptorRequest.setArtifact(artifact);
descriptorRequest.setRepositories(context.remoteRepositories());
ArtifactDescriptorResult descriptorResult = context.repositorySystem()
.readArtifactDescriptor(context.repositorySystemSession(), descriptorRequest);

collectResult = toolbox.collectAsProject(
context.repositorySystemSession(),
resolutionScope,
artifact,
descriptorResult.getDependencies(),
descriptorResult.getManagedDependencies(),
descriptorResult.getRepositories(),
verbose);
} else {
collectResult = toolbox.collectAsDependency(
context.repositorySystemSession(),
resolutionScope,
new Dependency(new DefaultArtifact(gav), scope),
context.remoteRepositories(),
verbose);
}
CollectResult collectResult = toolbox.collectAsDependency(
context.repositorySystemSession(),
resolutionScope,
new Dependency(new DefaultArtifact(gav), scope),
context.remoteRepositories(),
verbose);
collectResult.getRoot().accept(new DependencyGraphDumper(getLog()::info));
} catch (ArtifactDescriptorException | DependencyCollectionException e) {
} catch (DependencyCollectionException e) {
throw new MojoExecutionException(e);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,66 @@
package eu.maveniverse.maven.toolbox.plugin;

import eu.maveniverse.maven.mima.context.Context;
import eu.maveniverse.maven.mima.context.ContextOverrides;
import eu.maveniverse.maven.mima.context.Runtime;
import eu.maveniverse.maven.mima.context.Runtimes;
import eu.maveniverse.maven.toolbox.shared.Toolbox;
import eu.maveniverse.maven.toolbox.shared.internal.ToolboxImpl;
import java.util.Locale;
import java.util.stream.Collectors;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.eclipse.aether.artifact.ArtifactTypeRegistry;
import org.eclipse.aether.collection.CollectResult;
import org.eclipse.aether.collection.DependencyCollectionException;
import org.eclipse.aether.util.graph.visitor.DependencyGraphDumper;

@Mojo(name = "tree", threadSafe = true)
public class TreeMojo extends AbstractMojo {
/**
* The resolution scope to display, accepted values are "runtime", "compile" or "test".
*/
@Parameter(property = "scope", defaultValue = "runtime", required = true)
private String scope;

/**
* Set it {@code true} for verbose tree.
*/
@Parameter(property = "verbose", defaultValue = "false", required = true)
private boolean verbose;

@Component
private MavenProject mavenProject;

@Override
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("boo");
public void execute() throws MojoExecutionException {
Runtime runtime = Runtimes.INSTANCE.getRuntime();
try (Context context = runtime.create(ContextOverrides.create().build())) {
ArtifactTypeRegistry artifactTypeRegistry =
context.repositorySystemSession().getArtifactTypeRegistry();
Toolbox toolbox = new ToolboxImpl(context.repositorySystem());
Toolbox.ResolutionScope resolutionScope =
Toolbox.ResolutionScope.valueOf(scope.toUpperCase(Locale.ENGLISH));
CollectResult collectResult = toolbox.collectAsProject(
context.repositorySystemSession(),
resolutionScope,
RepositoryUtils.toArtifact(mavenProject.getArtifact()),
mavenProject.getDependencies().stream()
.map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry))
.collect(Collectors.toList()),
mavenProject.getDependencyManagement().getDependencies().stream()
.map(d -> RepositoryUtils.toDependency(d, artifactTypeRegistry))
.collect(Collectors.toList()),
context.remoteRepositories(),
verbose);
collectResult.getRoot().accept(new DependencyGraphDumper(getLog()::info));
} catch (DependencyCollectionException e) {
throw new MojoExecutionException(e);
}
}
}

0 comments on commit a6af792

Please sign in to comment.