{"record":{"id":"20b57f96ed1d19d5","repo":"quarkusio/quarkus","slug":"failed-to-resolve-artifact-gav","errorCode":null,"errorMessage":"Failed to resolve artifact: ${gav}","messagePattern":"Failed to resolve artifact: (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/rewrite/QuarkusUpdatesRepository.java","lineNumber":119,"sourceCode":"                    throw new RuntimeException(\n                            \"quarkus update artifacts require multiple rewrite plugin versions: \" + propRewritePluginVersion\n                                    + \" and \" + pluginVersion);\n                }\n                if (log.isDebugEnabled()) {\n                    log.debug(String.format(\n                            \"=> %d specific recipe\" + (recipes.size() != 1 ? \"s\" : \"\")\n                                    + \" found (compatible with OpenRewrite %s plugin version: %s)\",\n                            recipes.size(),\n                            buildTool,\n                            propRewritePluginVersion));\n                } else {\n                    log.info(String.format(\n                            \"=> %s specific recipe\" + (recipes.size() != 1 ? \"s\" : \"\") + \" found\",\n                            MessageFormatter.green(String.valueOf(recipes.size()))));\n                }\n\n            } catch (BootstrapMavenException e) {\n                throw new RuntimeException(\"Failed to resolve artifact: \" + gav, e);\n            } catch (IOException e) {\n                throw new RuntimeException(\"Failed to load recipes in artifact: \" + gav, e);\n            }\n        }\n\n        return new FetchResult(String.join(\",\", artifacts),\n                recipes, propRewritePluginVersion);\n    }\n\n    private static String getPropRewritePluginVersion(Properties props, BuildTool buildTool) {\n        switch (buildTool) {\n            case MAVEN:\n                return Optional.ofNullable(props.getProperty(PROP_REWRITE_MAVEN_PLUGIN_VERSION))\n                        .orElse(DEFAULT_MAVEN_REWRITE_PLUGIN_VERSION);\n            case GRADLE:\n            case GRADLE_KOTLIN_DSL:\n                return Optional.ofNullable(props.getProperty(PROP_REWRITE_GRADLE_PLUGIN_VERSION))\n                        .orElse(DEFAULT_GRADLE_REWRITE_PLUGIN_VERSION);","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/rewrite/QuarkusUpdatesRepository.java#L101-L137","documentation":"fetchRecipes() resolves the update recipe artifact (GAV) from a Maven repository before extracting recipe YAML. If artifact resolution fails with BootstrapMavenException, the error is wrapped in RuntimeException(\"Failed to resolve artifact: <gav>\"). This means the artifact could not be downloaded — not that its contents are bad.","triggerScenarios":"Calling fetchRecipes (via pluginVersion/newRecipes flow of `quarkus update`) with a GAV that does not exist in the configured repositories, cannot be reached over the network, or requires credentials the local Maven settings do not provide.","commonSituations":"Typo in groupId:artifactId:version of the update artifact; offline/VPN/air-gapped environment with no access to Maven Central or the internal repo; corporate Nexus/Artifactory requires authentication; artifact not yet deployed to the internal repository.","solutions":["Verify the GAV coordinates and that the artifact exists in the target repository (e.g. search Maven Central).","Check network access / proxy settings and ~/.m2/settings.xml repository definitions and credentials.","Retry after the artifact is deployed, or build/install it locally with `mvn install`.","Clear stale cached failure metadata in ~/.m2/repository for that artifact and retry."],"exampleFix":"// before: nonexistent artifact\n--artifact=io.quarkus:quarkus-update-recipes:9.9\n// after: valid published artifact\n--artifact=io.quarkus:quarkus-update-recipes:3.15.0","handlingStrategy":"try-catch","validationCode":"// Pre-check resolution with Maven before running the update:\n// mvn dependency:get -Dartifact=io.quarkus:quarkus-update-recipes:3.15.0","typeGuard":null,"tryCatchPattern":"try {\n    FetchResult r = repo.fetchRecipes(gav, buildTool, ...);\n} catch (RuntimeException e) {\n    if (e.getCause() instanceof BootstrapMavenException) {\n        log.error(\"Cannot resolve \" + gav + \": check coordinates, network, and ~/.m2/settings.xml\", e);\n    }\n}","preventionTips":["Verify GAV coordinates exist (search Maven Central or your internal repo) before running.","Test connectivity to the repository; configure proxies in ~/.m2/settings.xml.","Ensure credentials for private repos are present in settings.xml.","Install custom artifacts locally with `mvn install` before referencing them."],"tags":["maven","artifact-resolution","network"],"backgroundTag":"artifact-resolution-failed","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}