diff --git a/src/it/projects/list-repositories/pom.xml b/src/it/projects/list-repositories/pom.xml index d74bc248d..10847069a 100644 --- a/src/it/projects/list-repositories/pom.xml +++ b/src/it/projects/list-repositories/pom.xml @@ -43,6 +43,13 @@ + + + fake-plugin-repository + http://localhost:3456 + + + org.apache.maven @@ -51,4 +58,4 @@ - \ No newline at end of file + diff --git a/src/it/projects/list-repositories/verify.groovy b/src/it/projects/list-repositories/verify.groovy index bd311cf9c..dde475ebf 100644 --- a/src/it/projects/list-repositories/verify.groovy +++ b/src/it/projects/list-repositories/verify.groovy @@ -23,6 +23,8 @@ assert file.exists() String buildLog = file.getText( "UTF-8" ) assert buildLog.contains( 'Project remote repositories used by this build:') assert buildLog.contains( '* fake-remote-repository (http://localhost:2345, default, releases+snapshots)') +assert buildLog.contains( 'Plugin repositories used by this build:' ) +assert buildLog.contains( '* fake-plugin-repository (http://localhost:3456, default, releases+snapshots)' ) assert buildLog.contains( '* sonatype-nexus-snapshots (https://oss.sonatype.org/content/repositories/snapshots, default, snapshots) mirrored by mrm-maven-plugin') if (!mavenVersion.startsWith('4.')) { // Maven 4 drop central repo from default super pom - so model doesn't have it diff --git a/src/main/java/org/apache/maven/plugins/dependency/ListRepositoriesMojo.java b/src/main/java/org/apache/maven/plugins/dependency/ListRepositoriesMojo.java index 01b9cc21c..82f2fb5a9 100644 --- a/src/main/java/org/apache/maven/plugins/dependency/ListRepositoriesMojo.java +++ b/src/main/java/org/apache/maven/plugins/dependency/ListRepositoriesMojo.java @@ -48,8 +48,8 @@ import org.sonatype.plexus.build.incremental.BuildContext; /** - * Goal that collects all project dependencies and then lists the repositories used by the build and by the transitive - * dependencies. + * Goal that collects all project dependencies and then lists the dependency repositories used by the build and + * transitive dependencies, along with the plugin repositories used by the build. * * @author Brian Fox * @since 2.2 @@ -109,21 +109,18 @@ public boolean visitLeave(DependencyNode node) { } })); - if (repositories.isEmpty()) { + Set pluginRepositories = + new HashSet<>(Optional.ofNullable(getProject().getRemotePluginRepositories()) + .orElseGet(Collections::emptyList)); + + if (repositories.isEmpty() && pluginRepositories.isEmpty()) { getLog().info("No remote repository is used by this build." + System.lineSeparator()); return; } StringBuilder message = new StringBuilder(); - - Map> repoGroupByMirrors = repositories.stream() - .collect(Collectors.groupingBy( - repo -> repo.getMirroredRepositories().isEmpty())); - - prepareRemoteRepositoriesList( - message, repoGroupByMirrors.getOrDefault(Boolean.TRUE, Collections.emptyList())); - prepareRemoteMirrorRepositoriesList( - message, repoGroupByMirrors.getOrDefault(Boolean.FALSE, Collections.emptyList())); + prepareRemoteRepositoriesList(message, "Project remote repositories used by this build:", repositories); + prepareRemoteRepositoriesList(message, "Plugin repositories used by this build:", pluginRepositories); getLog().info(message); @@ -163,11 +160,21 @@ private void prepareRemoteMirrorRepositoriesList( } private void prepareRemoteRepositoriesList( - StringBuilder message, Collection remoteProjectRepositories) { + StringBuilder message, String heading, Collection repositories) { + if (repositories.isEmpty()) { + return; + } - message.append("Project remote repositories used by this build:").append(System.lineSeparator()); + message.append(heading).append(System.lineSeparator()); - remoteProjectRepositories.forEach( - repo -> message.append(" * ").append(repo).append(System.lineSeparator())); + Map> repoGroupByMirrors = repositories.stream() + .collect(Collectors.groupingBy( + repo -> repo.getMirroredRepositories().isEmpty())); + + repoGroupByMirrors + .getOrDefault(Boolean.TRUE, Collections.emptyList()) + .forEach(repo -> message.append(" * ").append(repo).append(System.lineSeparator())); + prepareRemoteMirrorRepositoriesList( + message, repoGroupByMirrors.getOrDefault(Boolean.FALSE, Collections.emptyList())); } }