public void writeCache()

in src/main/java/org/apache/maven/plugin/compiler/IncrementalBuild.java [388:423]


    public void writeCache() throws IOException {
        try (DataOutputStream out = new DataOutputStream(new BufferedOutputStream(Files.newOutputStream(
                cacheFile,
                StandardOpenOption.WRITE,
                StandardOpenOption.CREATE,
                StandardOpenOption.TRUNCATE_EXISTING)))) {
            out.writeLong(MAGIC_NUMBER);
            out.writeLong(buildTime);
            out.writeInt(optionsHash);
            out.writeInt(saveSourceList ? sourceFiles.size() : 0);
            if (saveSourceList) {
                Path srcDir = null;
                Path tgtDir = null;
                Path previousParent = null;
                for (SourceFile source : sourceFiles) {
                    final Path sourceFile = source.file;
                    final Path outputFile = source.getOutputFile();
                    boolean sameSrcDir = Objects.equals(srcDir, srcDir = source.directory.root);
                    boolean sameTgtDir = Objects.equals(tgtDir, tgtDir = source.directory.getOutputDirectory());
                    boolean sameOutput = source.isStandardOutputFile();
                    boolean omitted = Files.notExists(outputFile);
                    out.writeByte((sameSrcDir ? 0 : NEW_SOURCE_DIRECTORY)
                            | (sameTgtDir ? 0 : NEW_TARGET_DIRECTORY)
                            | (sameOutput ? 0 : EXPLICIT_OUTPUT_FILE)
                            | (omitted ? OMITTED_OUTPUT_FILE : 0));

                    if (!sameSrcDir) out.writeUTF((previousParent = srcDir).toString());
                    if (!sameTgtDir) out.writeUTF(tgtDir.toString());
                    if (!sameOutput) out.writeUTF(outputFile.toString());
                    out.writeUTF(previousParent.relativize(sourceFile).toString());
                    out.writeLong(source.lastModified);
                    previousParent = sourceFile.getParent();
                }
            }
        }
    }