{"record":{"id":"812ca62e073a02b5","repo":"apache/maven","slug":"no-remote-repositories-provided","errorCode":null,"errorMessage":"no remote repositories provided","messagePattern":"no remote repositories provided","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"impl/maven-impl/src/main/java/org/apache/maven/impl/AbstractSession.java","lineNumber":325,"sourceCode":"            throw new UnsupportedOperationException(\"Not implemented yet\");\n        }\n    }\n\n    @Override\n    public List<org.eclipse.aether.graph.Dependency> toDependencies(\n            Collection<DependencyCoordinates> dependencies, boolean managed) {\n        return dependencies == null ? null : map(dependencies, d -> toDependency(d, managed));\n    }\n\n    static List<RemoteRepository> getRepositories(\n            List<RemoteRepository> repositories,\n            List<org.eclipse.aether.repository.RemoteRepository> resolverRepositories) {\n        if (repositories != null) {\n            return repositories;\n        } else if (resolverRepositories != null) {\n            return map(resolverRepositories, DefaultRemoteRepository::new);\n        } else {\n            throw new IllegalArgumentException(\"no remote repositories provided\");\n        }\n    }\n\n    @Nonnull\n    @Override\n    public List<RemoteRepository> getRemoteRepositories() {\n        return Collections.unmodifiableList(repositories);\n    }\n\n    @Nonnull\n    @Override\n    public SessionData getData() {\n        org.eclipse.aether.SessionData data = session.getData();\n        return new SessionData() {\n            @Override\n            public <T> void set(@Nonnull Key<T> key, @Nullable T value) {\n                data.set(key, value);\n            }","sourceCodeStart":307,"sourceCodeEnd":343,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/impl/maven-impl/src/main/java/org/apache/maven/impl/AbstractSession.java#L307-L343","documentation":"AbstractSession.getRepositories(repositories, resolverRepositories) merges the request-scoped and session-scoped remote repository lists before resolution. If both are null it throws IllegalArgumentException because dependency or artifact resolution has no repositories to query. It is the guard behind Maven API resolution calls (e.g. DependencyResolverRequest, ArtifactResolverRequest) that end up with an empty effective repository list.","triggerScenarios":"Calling session.getService(DependencyResolver.class).resolve(...) or ArtifactResolver with a request whose setRepositories(...) is null/omitted while the session itself was created with no remote repositories (e.g. a minimal/standalone session or one built with an empty repository list).","commonSituations":"Embedding Maven Resolver in standalone tools and forgetting to add central; building a Session via a factory without settings.xml repositories; passing request.repositories as null deliberately for 'session default' but the session default is empty; tests with a session wired to only a local repository.","solutions":["Set repositories on the request: DependencyResolverRequest.builder().setRepositories(session.getRemoteRepositories()) or an explicit list","Create the session with at least one remote repository (e.g. central) via the session factory / SessionBuilder","If only local resolution is intended, check the local repository first and skip the remote resolution path instead of calling resolve with no repositories"],"exampleFix":"// before\nDependencyResolverRequest req = DependencyResolverRequest.builder()\n        .session(session)\n        .request(DependencyRequest...) // no setRepositories\n        .build();\nsession.getService(DependencyResolver.class).resolve(req); // throws: no repositories\n\n// after\nDependencyResolverRequest req = DependencyResolverRequest.builder()\n        .session(session)\n        .request(DependencyRequest...)\n        .setRepositories(session.getRemoteRepositories())\n        .build();","handlingStrategy":"validation","validationCode":"List<RemoteRepository> repos = request.repositories() != null\n        ? request.repositories()\n        : session.getRemoteRepositories();\nif (repos == null || repos.isEmpty()) {\n    throw new IllegalArgumentException('No remote repositories: pass repositories in the request or configure the session');\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always set repositories on resolution requests instead of relying on implicit session state","When building a session programmatically, add at least central","Log the effective repository list before resolving in embedded scenarios"],"tags":["maven","dependency-resolution","remote-repository","configuration"],"backgroundTag":"missing-remote-repository","analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}