You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2026/08/08 21:19:18 UTC
(maven-dependency-plugin) branch master updated: [MDEP-425] List plugin repositories
This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-dependency-plugin.git
The following commit(s) were added to refs/heads/master by this push:
new 919074c6 [MDEP-425] List plugin repositories
919074c6 is described below
commit 919074c6f490d8617a00fb5d1886f3c86a1e9466
Author: Vaclav Haisman <vh...@gmail.com>
AuthorDate: Sun Aug 2 20:24:27 2026 +0200
[MDEP-425] List plugin repositories
Show effective plugin repositories in a separate, mirror-aware section of the list-repositories output. Extend the existing integration test to cover the new section.
Fixes #868.
---
src/it/projects/list-repositories/pom.xml | 9 ++++-
src/it/projects/list-repositories/verify.groovy | 2 ++
.../plugins/dependency/ListRepositoriesMojo.java | 39 +++++++++++++---------
3 files changed, 33 insertions(+), 17 deletions(-)
diff --git a/src/it/projects/list-repositories/pom.xml b/src/it/projects/list-repositories/pom.xml
index d74bc248..10847069 100644
--- a/src/it/projects/list-repositories/pom.xml
+++ b/src/it/projects/list-repositories/pom.xml
@@ -43,6 +43,13 @@
</repository>
</repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>fake-plugin-repository</id>
+ <url>http://localhost:3456</url>
+ </pluginRepository>
+ </pluginRepositories>
+
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
@@ -51,4 +58,4 @@
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/it/projects/list-repositories/verify.groovy b/src/it/projects/list-repositories/verify.groovy
index bd311cf9..dde475eb 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 01b9cc21..82f2fb5a 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.eclipse.aether.util.graph.visitor.TreeDependencyVisitor;
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 <a href="mailto:brianf@apache.org">Brian Fox</a>
* @since 2.2
@@ -109,21 +109,18 @@ public class ListRepositoriesMojo extends AbstractDependencyMojo {
}
}));
- if (repositories.isEmpty()) {
+ Set<RemoteRepository> 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<Boolean, List<RemoteRepository>> 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 @@ public class ListRepositoriesMojo extends AbstractDependencyMojo {
}
private void prepareRemoteRepositoriesList(
- StringBuilder message, Collection<RemoteRepository> remoteProjectRepositories) {
+ StringBuilder message, String heading, Collection<RemoteRepository> 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<Boolean, List<RemoteRepository>> 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()));
}
}