diff --git a/liberty-maven-plugin/src/main/java/io/openliberty/tools/maven/server/DevcMojo.java b/liberty-maven-plugin/src/main/java/io/openliberty/tools/maven/server/DevcMojo.java index 44932920a..f4a992bec 100644 --- a/liberty-maven-plugin/src/main/java/io/openliberty/tools/maven/server/DevcMojo.java +++ b/liberty-maven-plugin/src/main/java/io/openliberty/tools/maven/server/DevcMojo.java @@ -22,7 +22,9 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.List; +import java.util.Map; import java.util.Set; /* graphBuilder */ @@ -58,6 +60,7 @@ /* Aether */ import org.apache.maven.model.Dependency; +import org.apache.maven.model.DependencyManagement; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.artifact.Artifact; import org.eclipse.aether.collection.CollectRequest; @@ -65,6 +68,10 @@ import org.eclipse.aether.resolution.DependencyResolutionException; import org.eclipse.aether.resolution.DependencyResult; +import org.apache.maven.shared.dependency.analyzer.DefaultProjectDependencyAnalyzer; +import org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzerException; +import org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalysis; + /** * Start dev mode for containers */ @@ -92,6 +99,9 @@ public class DevcMojo extends DevMojo { @Parameter(property = "test", defaultValue = "false") private boolean test; + @Parameter(property = "analyze", defaultValue = "false") + private boolean analyze; + @Parameter(property = "includes") private String includes; @@ -105,6 +115,8 @@ public class DevcMojo extends DevMojo { protected void doExecute() throws Exception { if (test) { testMavenStuff(); + } else if (analyze) { + testAnalyze(); } else if (aether) { if (filter) { doAetherFilterMethod(); @@ -232,20 +244,111 @@ private void doAetherMethod() throws MojoExecutionException, DependencyResolutio private void testMavenStuff() throws MojoExecutionException, DependencyResolutionException { List dependencies = project.getDependencies(); - log.debug("Dependencies"); + log.debug("<<< Dependencies >>>"); for (Dependency d : dependencies) { log.debug(d.getArtifactId()); } + + /* Set artifacts = project.getArtifacts(); - log.debug("Artifacts"); + log.debug("<<< Artifacts >>>"); for (Artifact a : artifacts) { log.debug(a.getArtifactId()); } + + Map artifactMap = project.getArtifactMap(); + Set keys = artifactMap.keySet(); + log.debug("<<< Artifact Map keys >>>"); + for (String s : keys) { + log.debug(s); + } + Collection artifacts_2 = artifactMap.values(); + log.debug("<<< Artifact Map artifacts >>>"); + for (Artifact a : artifacts_2) { + log.debug(a.getArtifactId()); + } + */ + + /* + Set dependencyArtifacts = project.getDependencyArtifacts(); + log.debug("\n<<< Dependency Artifacts >>>"); + for (Artifact a : dependencyArtifacts) { + log.debug(a.getArtifactId()); + } + + List compileDependencies = project.getCompileDependencies(); + log.debug("\n<<< Compile Dependencies >>>"); + for (Dependency d : compileDependencies) { + log.debug(d.getArtifactId()); + } + + List compileArtifacts = project.getCompileArtifacts(); + log.debug("\n<<< Compile Artifacts >>>"); + for (Artifact a : compileArtifacts) { + log.debug(a.getArtifactId()); + } + + List runtimeDependencies = project.getRuntimeDependencies(); + log.debug("\n<<< Runtime Dependencies >>>"); + for (Dependency d : runtimeDependencies) { + log.debug(d.getArtifactId()); + } + + List runtimeArtifacts = project.getRuntimeArtifacts(); + log.debug("\n<<< Runtime Artifacts >>>"); + for (Artifact a : runtimeArtifacts) { + log.debug(a.getArtifactId()); + } + */ + + DependencyManagement dm = project.getDependencyManagement(); + if (dm != null) { + List dmDependencies = dm.getDependencies(); + log.debug("<<< DM Dependencies >>>"); + for (Dependency d : dmDependencies) { + log.debug(d.getArtifactId()); + } + } else { + log.debug("DM is null"); + } + + } + + private void testAnalyze() { + log.debug("<<<<<<<<<<<< testAnalyze >>>>>>>>>>>"); + DefaultProjectDependencyAnalyzer analyzer = new DefaultProjectDependencyAnalyzer(); + if (analyzer == null) { + log.debug("analyzer is null"); + } + try { + ProjectDependencyAnalysis analysis = analyzer.analyze(project); + if (analysis == null) { + log.debug("analysis is null"); + } + Set usedDeclaredArtifacts = analysis.getUsedDeclaredArtifacts(); + Set usedUndeclaredArtifacts = analysis.getUsedUndeclaredArtifacts(); + Set unusedDeclaredArtifacts = analysis.getUnusedDeclaredArtifacts(); + printArtifacts(usedDeclaredArtifacts, "Used & Declared"); + printArtifacts(usedUndeclaredArtifacts, "Used & Undeclared"); + printArtifacts(unusedDeclaredArtifacts, "Unused & Declared"); + } catch (ProjectDependencyAnalyzerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + private void printArtifacts(Set artifacts, String type) { + log.debug("<<<<< " + type + " >>>>>"); + for (Artifact a : artifacts) { + log.debug(a.getArtifactId()); + } } private void doAetherFilterMethod() throws MojoExecutionException, DependencyResolutionException { log.debug("<<<<<<<<<<<< doAetherFilterMethod >>>>>>>>>>>"); - List dependencies = project.getDependencies(); + DependencyManagement dm = project.getDependencyManagement(); + // null check for dm + List dependencies = dm.getDependencies(); List artifacts = new ArrayList(); for (Dependency dep : dependencies) { Artifact artifact = getArtifact(dep.getGroupId(), dep.getArtifactId(), dep.getType(), dep.getVersion()); @@ -265,10 +368,12 @@ private void doAetherFilterMethod() throws MojoExecutionException, DependencyRes //log.debug("collectRequest:"); //log.debug(collectRequest.toString()); + // is there a way to modify the dependency request to not download dependencies? DependencyRequest depRequest = new DependencyRequest(collectRequest, null); //log.debug("depRequest:"); //log.debug(depRequest.toString()); + // is there a way to resolve dependencies without downloading them? DependencyResult dependencyResult = repositorySystem.resolveDependencies(repoSession, depRequest); //log.debug("dependencyResult:"); //log.debug(dependencyResult.toString());