{"record":{"id":"0fdfef5e9109ca81","repo":"gradle/gradle","slug":"must-provide-at-least-one-pattern-to-not-match","errorCode":null,"errorMessage":"must provide at least one pattern to not match","messagePattern":"must provide at least one pattern to not match","errorType":"exception","errorClass":"InvalidUserDataException","httpStatus":null,"severity":"error","filePath":"platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/copy/DefaultCopySpec.java","lineNumber":340,"sourceCode":"    @Override\n    public CopySpec filesMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action) {\n        if (!patterns.iterator().hasNext()) {\n            throw new InvalidUserDataException(\"must provide at least one pattern to match\");\n        }\n        PatternMatcher matcher = PatternMatcherFactory.getPatternsMatcher(true, isCaseSensitive(), patterns);\n        return eachFile(new MatchingCopyAction(matcher, action));\n    }\n\n    @Override\n    public CopySpec filesNotMatching(String pattern, Action<? super FileCopyDetails> action) {\n        PatternMatcher matcher = PatternMatcherFactory.getPatternMatcher(true, isCaseSensitive(), pattern);\n        return eachFile(new MatchingCopyAction(matcher.negate(), action));\n    }\n\n    @Override\n    public CopySpec filesNotMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action) {\n        if (!patterns.iterator().hasNext()) {\n            throw new InvalidUserDataException(\"must provide at least one pattern to not match\");\n        }\n        PatternMatcher matcher = PatternMatcherFactory.getPatternsMatcher(true, isCaseSensitive(), patterns);\n        return eachFile(new MatchingCopyAction(matcher.negate(), action));\n    }\n\n    public PatternSet getPatterns() {\n        return patternSet;\n    }\n\n    @Override\n    public CopySpec include(String... includes) {\n        patternSet.include(includes);\n        return this;\n    }\n\n    @Override\n    public CopySpec include(Iterable<String> includes) {\n        patternSet.include(includes);","sourceCodeStart":322,"sourceCodeEnd":358,"githubUrl":"https://github.com/gradle/gradle/blob/534f27719b66953f95cc907aae7f2c1b12f5482d/platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/copy/DefaultCopySpec.java#L322-L358","documentation":"Gradle throws this error when the following condition is violated: must provide at least one pattern to not match","triggerScenarios":"Thrown at platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/copy/DefaultCopySpec.java:340 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Review the values passed to this API and correct the invalid input described in the error message."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"534f27719b66953f95cc907aae7f2c1b12f5482d","analyzedAt":"2026-08-22T08:09:12.375Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}