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();
}
}
}
}