quarkusio/quarkus · error · GradleException
Cannot find deployment project for extension ${extensionArti
Error message
Cannot find deployment project for extension ${extensionArtifactId} at path ${deploymentProjectPath} What it means
When a local extension project's quarkus { } configuration declares its deployment module (ConfigurationUtils.getDeploymentModule), createExtensionDependency resolves that path to a local Project via ToolingUtils.findLocalProject. If the declared deployment project path cannot be found in the reachable build (wrong path, project not included, or lives in an unlinked included build), a GradleException is thrown naming both the extension artifact and the missing deployment path.
Source
Thrown at devtools/gradle/gradle-model/src/main/java/io/quarkus/gradle/tooling/dependency/DependencyUtils.java:231
private static ProjectExtensionDependency createExtensionDependency(
Project project,
ModuleVersionIdentifier extensionArtifactId,
Project extensionProject,
@Nullable Object extensionConfiguration,
@Nullable Properties extensionDescriptor,
boolean isIncludedBuild) {
if (extensionConfiguration == null && extensionDescriptor == null) {
throw new IllegalArgumentException("both extensionConfiguration and extensionDescriptor are null");
}
Project deploymentProject = null;
if (extensionConfiguration != null) {
final String deploymentProjectPath = ConfigurationUtils.getDeploymentModule(extensionConfiguration).get();
deploymentProject = ToolingUtils.findLocalProject(extensionProject, deploymentProjectPath);
if (deploymentProject == null) {
throw new GradleException("Cannot find deployment project for extension " + extensionArtifactId + " at path "
+ deploymentProjectPath);
}
} else if (extensionDescriptor.containsKey(BootstrapConstants.PROP_DEPLOYMENT_ARTIFACT)) {
final ArtifactCoords deploymentArtifact = ArtifactCoords
.fromString(extensionDescriptor.getProperty(BootstrapConstants.PROP_DEPLOYMENT_ARTIFACT));
deploymentProject = ToolingUtils.findLocalProject(project, deploymentArtifact);
if (deploymentProject == null) {
throw new GradleException("Cannot find deployment project for extension " + extensionArtifactId
+ " with artifact coordinates " + deploymentArtifact);
}
}
final List<Dependency> conditionalDependencies = new ArrayList<>(0);
final List<Dependency> conditionalDevDependencies = new ArrayList<>(0);
final List<ArtifactKey> dependencyConditions = new ArrayList<>(0);
if (extensionConfiguration != null) {View on GitHub (pinned to e1c734241f)
Solutions
- Check the deploymentModule path in the extension project's build.gradle matches an actual project (include it in settings.gradle if missing)
- Verify the deployment project exists and is named e.g. <ext>-deployment in the same build
- If the extension lives in an included build, ensure both runtime and deployment projects are in that included build and the build is linked properly
- Run ./gradlew projects to list resolvable project paths and compare with the error message
- Clear configuration cache / stop daemon if the project was recently renamed
Example fix
// before
quarkus { deploymentModule = ':my-ext-deployment' } // project does not exist
// after (settings.gradle)
include ':my-ext-deployment'
// build.gradle
quarkus { deploymentModule = ':my-ext-deployment' } Defensive patterns
Strategy: validation
Validate before calling
String depPath = extProject.getExtensions()
.findByName("quarkus") != null ? getDeploymentModulePath(extProject) : null;
if (depPath != null && extProject.getRootProject().findProject(depPath) == null) {
throw new IllegalStateException("deploymentModule path not found: " + depPath); Try / catch
try {
var dep = DependencyUtils.getProjectExtensionDependencyOrNull(project, path, buildPath);
} catch (GradleException e) {
if (e.getMessage().startsWith("Cannot find deployment project for extension")) {
// check settings.gradle includes and the deploymentModule path
} else throw e;
} Prevention
- Verify the deploymentModule path with ./gradlew projects after any rename
- Always include the -deployment subproject in settings.gradle
- Keep deployment projects in the same build (or same included build) as the runtime project
- Update the quarkus { } block whenever deployment project paths change
When it happens
Trigger: getExtensionInfoOrNull -> createExtensionDependency for an extension project whose quarkus.deploymentModule path (e.g. ':my-ext-deployment') is not a project visible to findLocalProject (not in settings.gradle includes, or wrong path in an included build).
Common situations: Typos in the deploymentModule path; deployment subproject removed/renamed while the runtime project's config still references it; extension projects in included builds where the deployment project is in a different build; forgetting the include in settings.gradle.
Related errors
- Quarkus Extension Dependency Verification Error. See logs be
- both extensionConfiguration and extensionDescriptor are null
- Cannot find deployment project for extension ${extensionArti
- Unknown ExtensionDependency type: ${dependency.getClass().ge
- Failed to load steps from %s
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/ddbf6bd99b069998.
Report an issue: GitHub.