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()));
}
}