{"record":{"id":"91f016a4dc3913c2","repo":"alibaba/spring-ai-alibaba","slug":"unknown-packaging-packaging-check-project-met","errorCode":null,"errorMessage":"Unknown packaging '${packaging}' check project metadata","messagePattern":"Unknown packaging '(.+?)' check project metadata","errorType":"validation","errorClass":"InvalidProjectRequestException","httpStatus":null,"severity":"error","filePath":"spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/builder/generator/service/generator/GraphProjectReqToDescConverter.java","lineNumber":161,"sourceCode":"\t\t\t\t\t\t\"Invalid type '\" + type + \"' (missing build tag) check project metadata\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void validateLanguage(String language, InitializrMetadata metadata) {\n\t\tif (language != null) {\n\t\t\tDefaultMetadataElement languageFromMetadata = metadata.getLanguages().get(language);\n\t\t\tif (languageFromMetadata == null) {\n\t\t\t\tthrow new InvalidProjectRequestException(\"Unknown language '\" + language + \"' check project metadata\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void validatePackaging(String packaging, InitializrMetadata metadata) {\n\t\tif (packaging != null) {\n\t\t\tDefaultMetadataElement packagingFromMetadata = metadata.getPackagings().get(packaging);\n\t\t\tif (packagingFromMetadata == null) {\n\t\t\t\tthrow new InvalidProjectRequestException(\n\t\t\t\t\t\t\"Unknown packaging '\" + packaging + \"' check project metadata\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void validateDependencies(ProjectRequest request, InitializrMetadata metadata) {\n\t\tList<String> dependencies = request.getDependencies();\n\t\tdependencies.forEach((dep) -> {\n\t\t\tDependency dependency = metadata.getDependencies().get(dep);\n\t\t\tif (dependency == null) {\n\t\t\t\tthrow new InvalidProjectRequestException(\"Unknown dependency '\" + dep + \"' check project metadata\");\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate void validateDependencyRange(Version platformVersion, List<Dependency> resolvedDependencies) {\n\t\tresolvedDependencies.forEach((dep) -> {\n\t\t\tif (!dep.match(platformVersion)) {","sourceCodeStart":143,"sourceCodeEnd":179,"githubUrl":"https://github.com/alibaba/spring-ai-alibaba/blob/f82da0b50f35744c13968191be2b1cd2452ef550/spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/builder/generator/service/generator/GraphProjectReqToDescConverter.java#L143-L179","documentation":"validatePackaging() verifies the requested packaging id (e.g. jar, war) exists in the Initializr metadata's packagings. If not found, an InvalidProjectRequestException('Unknown packaging ... check project metadata') is thrown. Only packaging ids registered in metadata.getPackagings() are valid.","triggerScenarios":"Calling validate/convert with ProjectRequest packaging set to an unregistered id — e.g. packaging 'ear' or a typo like 'jarr'.","commonSituations":"Typos in packaging parameter, clients expecting war support when only jar is registered, custom packaging values not added to initializr metadata.","solutions":["Use a registered packaging id such as 'jar' or 'war'","Register the packaging in the initializr metadata configuration (initializr.packagings)","Correct the typo in the caller"],"exampleFix":"// before\nrequest.setPackaging(\"jarr\");\n// after\nrequest.setPackaging(\"jar\");","handlingStrategy":"validation","validationCode":"if (packaging != null && !Set.of(\"jar\",\"war\").contains(packaging)) {\n    throw new IllegalArgumentException(\"packaging '\" + packaging + \"' not registered\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    converter.validate(request);\n} catch (InvalidProjectRequestException e) {\n    return ResponseEntity.badRequest().body(e.getMessage());\n}","preventionTips":["Default packaging to 'jar' when unsure","Source packaging options from metadata, not hardcoded lists","Register custom packagings in initializr metadata"],"tags":["initializr","validation","project-generation"],"backgroundTag":"invalid-enum-value","analyzedSha":"f82da0b50f35744c13968191be2b1cd2452ef550","analyzedAt":"2026-09-09T15:32:42.421Z","contentChangedAt":"2026-09-09T15:32:42.421Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}