OpenAPITools/openapi-generator · error · RuntimeException

Failed to generate .openapi-generator-ignore when the option

Error message

Failed to generate .openapi-generator-ignore when the option `openapiGeneratorIgnoreList` is enabled: 

What it means

DefaultGenerator.generateOpenapiGeneratorIgnoreFile (line 1023) runs when the openapiGeneratorIgnoreList option is non-empty: it writes a .openapi-generator-ignore file containing the user's entries, then rebuilds the ignore processor from it. The catch of IOException from Files.newBufferedWriter/write/close is rethrown with this message. This is virtually always a filesystem condition, not a spec problem: the output directory does not exist, is not writable, the disk is full, or the file is locked by another process.

Source

Thrown at modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java:1084

                    "#docs/*.md",
                    "# Then explicitly reverse the ignore rule for a single file:",
                    "#!docs/README.md",
                    "",
                    "# The following entries are pre-populated based on the input obtained via",
                    "# the option `openapiGeneratorIgnoreList` (--openapi-generator-ignore-list in CLI for example).",
                    "");
            Writer fileWriter = Files.newBufferedWriter(ignoreFile.toPath(), StandardCharsets.UTF_8);
            fileWriter.write(header);
            // add entries provided by the users
            for (String entry : config.getOpenapiGeneratorIgnoreList()) {
                fileWriter.write(entry);
                fileWriter.write("\n");
            }
            fileWriter.close();
            // re-create ignore processor based on the newly-created .openapi-generator-ignore
            this.ignoreProcessor = new CodegenIgnoreProcessor(ignoreFile);
        } catch (IOException e) {
            throw new RuntimeException("Failed to generate .openapi-generator-ignore when the option `openapiGeneratorIgnoreList` is enabled: ", e);
        }
    }

    private void generateSupportingFiles(List<File> files, Map<String, Object> bundle) {
        if (!generateSupportingFiles) {
            // TODO: process these anyway and report via dryRun?
            LOGGER.info("Skipping generation of supporting files.");
            return;
        }

        Set<String> supportingFilesToGenerate = getPropertyAsSet(CodegenConstants.SUPPORTING_FILES);
        for (SupportingFile support : config.supportingFiles()) {
            try {
                String outputFolder = config.outputFolder();
                if (StringUtils.isNotEmpty(support.getFolder())) {
                    outputFolder += File.separator + support.getFolder();
                }
                File of = new File(outputFolder);

View on GitHub (pinned to fcec517be3)

Solutions

  1. Ensure the output directory exists and is writable by the generating process (mkdir -p <out>; ls -ld <out>) before running.
  2. Close any editor/IDE/antivirus holding .openapi-generator-ignore open, or generate into a fresh output directory (-o /tmp/fresh-out) to confirm.
  3. Check disk space (df -h) and mount options (read-only volumes) if running in a container.
  4. If the ignore list is not actually needed, drop the openapiGeneratorIgnoreList option so the default ignore-file path (error [7]) or none applies instead.

Example fix

# before
openapi-generator generate -g java -i api.yaml -o out \
  --additional-properties openapiGeneratorIgnoreList=src/main/old/
# after: pre-create and verify the output directory first
mkdir -p out && openapi-generator generate -g java -i api.yaml -o out \
  --additional-properties openapiGeneratorIgnoreList=src/main/old/
Defensive patterns

Strategy: validation

Validate before calling

// Pre-flight the output directory before enabling openapiGeneratorIgnoreList
Path out = Path.of(config.outputFolder());
Files.createDirectories(out);
Path ignore = out.resolve(".openapi-generator-ignore");
if (Files.exists(ignore) && !Files.isWritable(ignore)) {
    throw new IllegalStateException("Ignore file not writable: " + ignore);
}
if (!Files.isWritable(out)) {
    throw new IllegalStateException("Output dir not writable: " + out);
}

Try / catch

try {
    generator.opts(input).generate();
} catch (RuntimeException e) {
    if (e.getMessage() != null && e.getMessage().contains("openapi-generator-ignore")
            && e.getCause() instanceof java.io.IOException) {
        // filesystem condition: surface actionable message, do not retry blindly
        throw new GenerationFailure("Cannot write ignore file - check output dir permissions", e.getCause());
    }
    throw e;
}

Prevention

When it happens

Trigger: Setting openapiGeneratorIgnoreList (e.g. --additional-properties openapiGeneratorIgnoreList=<entries>, or config.setOpenapiGeneratorIgnoreList(...)) while the configured output folder does not exist or is read-only; the target .openapi-generator-ignore being held open by an editor/IDE/antivirus on Windows; generating into a read-only Docker volume; ENOSPC.

Common situations: CI pipelines generating into a workspace owned by another user; containerized runs with a read-only bind mount for the output; local runs where the previous output folder is open in a file watcher; disk-full conditions on shared agents.

Related errors


AI-assisted analysis of OpenAPITools/openapi-generator@fcec517be3 (2026-08-22). Data as JSON: /api/errors/19bd2f4d052af8ab. Report an issue: GitHub.