quarkusio/quarkus · error · IllegalArgumentException
Unsupported build tool wrapper: ${buildTool}
Error message
Unsupported build tool wrapper: ${buildTool} What it means
When the project input requests build-tool wrapper tooling codestarts, the switch only handles GRADLE and MAVEN. Any other BuildTool value reaching getToolingCodestarts hits the default branch and throws this IllegalArgumentException, since wrapper generation is only implemented for these two build tools.
Source
Thrown at independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/codestarts/quarkus/QuarkusCodestartCatalog.java:229
.map(Extensions::toGA)
.filter(extensionsMapping::containsKey)
.map(extensionsMapping::get);
}
private List<String> getToolingCodestarts(QuarkusCodestartProjectInput projectInput) {
final List<String> codestarts = new ArrayList<>();
codestarts.add(projectInput.getBuildTool().getKey());
if (projectInput.getAppContent().contains(AppContent.BUILD_TOOL_WRAPPER)) {
switch (projectInput.getBuildTool()) {
case GRADLE:
case GRADLE_KOTLIN_DSL:
codestarts.add(Tooling.TOOLING_GRADLE_WRAPPER.key());
break;
case MAVEN:
codestarts.add(Tooling.TOOLING_MAVEN_WRAPPER.key());
break;
default:
throw new IllegalArgumentException("Unsupported build tool wrapper: " + projectInput.getBuildTool());
}
}
if (projectInput.getAppContent().contains(AppContent.DOCKERFILES)) {
codestarts.add(QuarkusCodestartCatalog.Tooling.TOOLING_DOCKERFILES.key());
}
return codestarts;
}
private Map<String, Object> generateSelectionData(QuarkusCodestartProjectInput projectInput,
List<Codestart> projectCodestarts) {
Map<String, Object> data = new HashMap<>();
final Map<String, Object> inputData = new HashMap<>();
inputData.put(INPUT_PROVIDED_CODE_KEY,
projectCodestarts.stream().filter(c -> c.getType() == CodestartType.CODE).map(c -> {
Map<String, Object> eData = new HashMap<>();
eData.put("name", c.getName());
eData.put("tags", c.getTags());
eData.putAll(c.getMetadata());View on GitHub (pinned to e1c734241f)
Solutions
- Use MAVEN or GRADLE as the build tool when requesting a wrapper
- Set includeBuildToolWrapper=false for unsupported build tools
- Check the BuildTool enum for supported values before calling
Example fix
// before input.setBuildTool(SomeOtherBuildTool); input.setIncludeBuildToolWrapper(true); // after input.setBuildTool(BuildTool.MAVEN); input.setIncludeBuildToolWrapper(true);
Defensive patterns
Strategy: validation
Validate before calling
if (input.isIncludeBuildToolWrapper() && input.getBuildTool() != BuildTool.MAVEN && input.getBuildTool() != BuildTool.GRADLE) { throw new IllegalArgumentException("wrapper only supports maven/gradle"); } Try / catch
try { catalog.select(projectInput, ...); } catch (IllegalArgumentException e) { if (e.getMessage().startsWith("Unsupported build tool wrapper")) { input.setIncludeBuildToolWrapper(false); catalog.select(projectInput, ...); } } Prevention
- Only request wrappers for MAVEN or GRADLE build tools
- Check BuildTool support before enabling includeBuildToolWrapper
- Keep custom BuildTool usages free of wrapper requests
When it happens
Trigger: Calling select (via CreateProject) with includeBuildToolWrapper=true and projectInput.getBuildTool() set to a value other than MAVEN or GRADLE (e.g. a custom/unsupported BuildTool enum value).
Common situations: Programmatic API users constructing a BuildTool value not covered by the wrapper tooling; passing 'maven' wrapper request for a custom build tool in embedded tooling.
Related errors
- Quarkus Gradle plugins require Gradle
- Unable to add extensions
- Failed to initialize Maven artifact resolver
- Choose a valid build tool. Accepted values are: ${validBuild
- You are trying to create a Maven project in a directory that
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/8ffc52d8feae928a.
Report an issue: GitHub.