in src/main/java/org/apache/maven/plugins/pmd/PmdReport.java [482:540]
private String determineAuxClasspath() throws MavenReportException {
try {
List<String> classpath = new ArrayList<>();
if (isAggregator()) {
List<String> dependencies = new ArrayList<>();
// collect exclusions for projects within the reactor
// if module a depends on module b and both are in the reactor
// then we don't want to resolve the dependency as an artifact.
List<String> exclusionPatterns = new ArrayList<>();
for (MavenProject localProject : getAggregatedProjects()) {
exclusionPatterns.add(localProject.getGroupId() + ":" + localProject.getArtifactId());
}
TransformableFilter filter = new AndFilter(Arrays.asList(
new ExclusionsFilter(exclusionPatterns),
includeTests
? ScopeFilter.including("compile", "provided", "test")
: ScopeFilter.including("compile", "provided")));
for (MavenProject localProject : getAggregatedProjects()) {
ProjectBuildingRequest buildingRequest =
new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
// use any additional configured repo as well
buildingRequest.getRemoteRepositories().addAll(localProject.getRemoteArtifactRepositories());
List<Dependency> managedDependencies = localProject.getDependencyManagement() == null
? null
: localProject.getDependencyManagement().getDependencies();
Iterable<ArtifactResult> resolvedDependencies = dependencyResolver.resolveDependencies(
buildingRequest, localProject.getDependencies(), managedDependencies, filter);
for (ArtifactResult resolvedArtifact : resolvedDependencies) {
dependencies.add(
resolvedArtifact.getArtifact().getFile().toString());
}
// Add the project's classes first
classpath.addAll(
includeTests
? localProject.getTestClasspathElements()
: localProject.getCompileClasspathElements());
}
// Add the dependencies as last entries
classpath.addAll(dependencies);
getLog().debug("Using aggregated aux classpath: " + classpath);
} else {
classpath.addAll(
includeTests ? project.getTestClasspathElements() : project.getCompileClasspathElements());
getLog().debug("Using aux classpath: " + classpath);
}
String path = StringUtils.join(classpath.iterator(), File.pathSeparator);
return path;
} catch (Exception e) {
throw new MavenReportException(e.getMessage(), e);
}
}