{"record":{"id":"cad0f4215c740b16","repo":"kestra-io/kestra","slug":"invalid-artifact-filename-expected-format-is","errorCode":null,"errorMessage":"Invalid artifact filename '{}', expected format is <groupId>__<artifactId>[__<classifier>]__<version>.jar","messagePattern":"Invalid artifact filename '(.+?)', expected format is <groupId>__<artifactId>\\[__<classifier>\\]__<version>\\.jar","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/io/kestra/core/plugins/PluginArtifact.java","lineNumber":106,"sourceCode":"            m.group(1),\n            m.group(2),\n            Optional.ofNullable(m.group(4)).filter(not(String::isEmpty)).orElse(JAR_EXTENSION),\n            Optional.ofNullable(m.group(6)).filter(not(String::isEmpty)).orElse(null),\n            \"LATEST\".equalsIgnoreCase(m.group(7)) ? \"LATEST\" : m.group(7),\n            null\n        );\n    }\n\n    /**\n     * Static helper method for constructing a new {@link PluginArtifact} from an artifact a file name.\n     *\n     * @param fileName The artifact's file name\n     * @return a new {@link PluginArtifact}.\n     */\n    public static PluginArtifact fromFileName(final String fileName) {\n        Matcher matcher = FILENAME_PATTERN.matcher(fileName);\n        if (!matcher.matches()) {\n            throw new IllegalArgumentException(\"Invalid artifact filename '\" + fileName + \"', expected format is <groupId>__<artifactId>[__<classifier>]__<version>.jar\");\n        }\n\n        String[] parts = fileName.substring(0, fileName.lastIndexOf(\".\")).split(\"__\");\n\n        String groupId = parts[0].replace(\"_\", \".\");\n        String artifactId = parts[1];\n        String version;\n        String classifier = null; // optional\n        if (parts.length == 4) {\n            classifier = parts[2];\n            version = parts[3].replace(\"_\", \".\");\n        } else {\n            version = parts[2].replace(\"_\", \".\");\n        }\n        return new PluginArtifact(groupId, artifactId, \"jar\", classifier, version, null);\n    }\n\n    public PluginArtifact relocateTo(URI uri) {","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/kestra-io/kestra/blob/823fada9274c4f9c251ea0a516460a4f7d958032/core/src/main/java/io/kestra/core/plugins/PluginArtifact.java#L88-L124","documentation":"Error \"Invalid artifact filename '{}', expected format is <groupId>__<artifactId>[__<classifier>]__<version>.jar\" thrown in kestra-io/kestra.","triggerScenarios":"Thrown at core/src/main/java/io/kestra/core/plugins/PluginArtifact.java:106 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rename the artifact file to the expected format <groupId>__<artifactId>[__<classifier>]__<version>.jar, e.g. io.kestra.plugin__plugin-jdbc__1.0.0.jar."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"823fada9274c4f9c251ea0a516460a4f7d958032","analyzedAt":"2026-08-14T06:15:17.947Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}