{"record":{"id":"6def9688cea858a0","repo":"apache/maven","slug":"remote-repository-url-invalid","errorCode":null,"errorMessage":"Remote repository URL invalid","messagePattern":"Remote repository URL invalid","errorType":"exception","errorClass":"TransportProviderException","httpStatus":null,"severity":"error","filePath":"impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultTransportProvider.java","lineNumber":57,"sourceCode":"public class DefaultTransportProvider implements TransportProvider {\n    private final org.eclipse.aether.spi.connector.transport.TransporterProvider transporterProvider;\n\n    @Inject\n    public DefaultTransportProvider(TransporterProvider transporterProvider) {\n        this.transporterProvider = requireNonNull(transporterProvider);\n    }\n\n    @Override\n    public Transport transport(Session session, RemoteRepository repository) {\n        try {\n            URI baseURI = new URI(repository.getUrl());\n            return new DefaultTransport(\n                    baseURI,\n                    transporterProvider.newTransporter(\n                            InternalSession.from(session).getSession(),\n                            ((DefaultRemoteRepository) repository).getRepository()));\n        } catch (URISyntaxException e) {\n            throw new TransportProviderException(\"Remote repository URL invalid\", e);\n        } catch (NoTransporterException e) {\n            throw new TransportProviderException(\"Unsupported remote repository\", e);\n        }\n    }\n}\n","sourceCodeStart":39,"sourceCodeEnd":63,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultTransportProvider.java#L39-L63","documentation":"DefaultTransportProvider.transport creates the transport for a RemoteRepository by first parsing repository.getUrl() with new URI(...). If the URL is syntactically invalid (spaces, illegal characters such as '<', '>', '|', '\"'), URISyntaxException is thrown and wrapped in TransportProviderException(\"Remote repository URL invalid\").","triggerScenarios":"transport(session, repository) with a URL containing a space ('http://nexus.example.com/my repo'), illegal punctuation, or a truncated/garbled URL copied from a browser or wiki.","commonSituations":"Typos in <repositories>/<distributionManagement><url> in pom.xml or settings.xml; on-prem Nexus/Artifactory repo paths with unencoded spaces; mirrorOf URLs pasted with trailing fragments or smart quotes.","solutions":["Locate the offending <url> in pom.xml, settings.xml (mirrors, profiles) or distributionManagement and correct it","Percent-encode illegal characters in the URL path (space -> %20) or configure the repository with a clean path","Add a build-time validation that new URI(url) parses for every repository you declare"],"exampleFix":"<!-- before -->\n<distributionManagement>\n  <repository>\n    <url>https://nexus.example.com/content/repositories/my releases</url>\n  </repository>\n</distributionManagement>\n\n<!-- after -->\n<distributionManagement>\n  <repository>\n    <url>https://nexus.example.com/content/repositories/my-releases</url>\n  </repository>\n</distributionManagement>","handlingStrategy":"validation","validationCode":"static URI parseRepoUrl(String url) {\n    try {\n        return new URI(url);\n    } catch (URISyntaxException e) {\n        throw new IllegalArgumentException(\"Malformed repository URL '\" + url + \"': \" + e.getReason(), e);\n    }\n}\n// validate all declared repositories at startup\nfor (RemoteRepository r : repos) parseRepoUrl(r.getUrl());","typeGuard":null,"tryCatchPattern":"try {\n    transportProvider.transport(session, repository);\n} catch (TransportProviderException e) {\n    if (e.getCause() instanceof URISyntaxException bad) {\n        // fix the URL in pom.xml / settings.xml; index tells where it breaks\n        throw new IllegalArgumentException(\"Fix repository URL at index \" + bad.getIndex() + \": \" + repository.getUrl(), e);\n    }\n    throw e;\n}","preventionTips":["Percent-encode spaces (%20) and avoid illegal characters in repository URLs","Validate every <url> under repositories, mirrors, and distributionManagement with new URI(url) in a config test","Prefer copying repository URLs from the repository manager's copy-paste button, not from rendered web pages"],"tags":["maven","resolver","repository","url","configuration"],"backgroundTag":"invalid-repository-url","analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}