{"record":{"id":"c8768516c06fb9b4","repo":"apache/maven","slug":"invalid-request","errorCode":null,"errorMessage":"Invalid request","messagePattern":"Invalid request","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java","lineNumber":96,"sourceCode":"        RequestTraceHelper.ResolverTrace trace = RequestTraceHelper.enter(request.getSession(), request);\n        try {\n            List<ArtifactRepository> repositories = session.toArtifactRepositories(\n                    request.getRepositories() != null ? request.getRepositories() : session.getRemoteRepositories());\n            ProjectBuildingRequest req = new DefaultProjectBuildingRequest()\n                    .setRepositorySession(session.getSession())\n                    .setRemoteRepositories(repositories)\n                    .setPluginArtifactRepositories(repositories)\n                    .setProcessPlugins(request.isProcessPlugins());\n            ProjectBuildingResult res;\n            if (request.getPath().isPresent()) {\n                Path path = request.getPath().get();\n                res = builder.build(path.toFile(), req);\n            } else if (request.getSource().isPresent()) {\n                Source source = request.getSource().get();\n                ModelSource2 modelSource = new SourceWrapper(source);\n                res = builder.build(modelSource, req);\n            } else {\n                throw new IllegalArgumentException(\"Invalid request\");\n            }\n            return new ProjectBuilderResult() {\n                @Override\n                public ProjectBuilderRequest getRequest() {\n                    return request;\n                }\n\n                @Nonnull\n                @Override\n                public String getProjectId() {\n                    return res.getProjectId();\n                }\n\n                @Nonnull\n                @Override\n                public Optional<Path> getPomFile() {\n                    return Optional.ofNullable(res.getPomFile()).map(File::toPath);\n                }","sourceCodeStart":78,"sourceCodeEnd":114,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java#L78-L114","documentation":"IllegalArgumentException from the Maven API ProjectBuilder when a ProjectBuilderRequest carries neither a Path nor a Source — build() has nothing to read a model from. The request is built through ProjectBuilderRequest.build(...) functions; exactly one input (path to a pom, or an in-memory Source) must be set before calling the service.","triggerScenarios":"Constructing ProjectBuilderRequest.build(session, r -> {}) without calling r.path(...) or r.source(...), then invoking ProjectBuilder.build(request); passing a default-constructed request from embedder or test code.","commonSituations":"Embedder/test code adopting the org.apache.maven.api services; refactors that drop or conditionally skip the path/source argument without a fallback branch.","solutions":["Set a pom path: ProjectBuilderRequest.build(session, r -> r.path(Path.of(\"pom.xml\")))","Or supply a Source for in-memory models: ProjectBuilderRequest.build(session, r -> r.source(mySource))","Assert request.getPath().isPresent() || request.getSource().isPresent() before invoking the builder"],"exampleFix":"// before\nProjectBuilderResult result = session.getService(ProjectBuilder.class)\n    .build(ProjectBuilderRequest.build(session, r -> {})); // Invalid request\n\n// after\nProjectBuilderResult result = session.getService(ProjectBuilder.class)\n    .build(ProjectBuilderRequest.build(session, r -> r.path(Path.of(\"pom.xml\"))));","handlingStrategy":"validation","validationCode":"// Fail fast on an unusable request before calling the builder\nif (request.getPath().isEmpty() && request.getSource().isEmpty()) {\n    throw new IllegalArgumentException(\n        \"ProjectBuilderRequest needs a pom path or a Source; neither was set\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Wrap request construction in helpers that require path or source as an argument","Review API call sites after upgrading to the org.apache.maven.api builder"],"tags":["maven","maven-api","project-builder","request-validation","embedder"],"backgroundTag":"missing-required-request-parameter","analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}