[ https://issues.apache.org/jira/browse/MSHARED-1453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17901329#comment-17901329 ]
ASF GitHub Bot commented on MSHARED-1453: ----------------------------------------- gnodet commented on PR #77: URL: https://github.com/apache/maven-archiver/pull/77#issuecomment-2502177476 I'd go for something like: ``` private void createPropertiesFile(Properties properties, Path outputFile) throws IOException { Path outputDir = outputFile.getParent(); if (outputDir != null && !Files.isDirectory(outputDir)) { Files.createDirectories(outputDir); } StringWriter sw = new StringWriter(); properties.store(sw, null); String nl = System.lineSeparator(); String output = Stream.of(sw.toString().split("\\R")) .filter(line -> !line.startsWith("#")) .sorted() .collect(Collectors.joining(nl, "", nl)); try (Writer pw = new CachingWriter(outputFile, StandardCharsets.ISO_8859_1)) { pw.write(output); } } ``` > Canonicalize properties files for reproducible builds > ----------------------------------------------------- > > Key: MSHARED-1453 > URL: https://issues.apache.org/jira/browse/MSHARED-1453 > Project: Maven Shared Components > Issue Type: Bug > Components: maven-archiver > Reporter: Elliotte Rusty Harold > Assignee: Elliotte Rusty Harold > Priority: Minor > > See discussion on https://github.com/apache/maven-archiver/pull/77/files > Briefly, properties files have non-unique representations and there's no > guarantee two JDKs from different companies and Java versions produce the > same byte-per-byte serialization. Our current code accounts for property > order and comments, but not variations in escaping (hex vs. UTF-8), separator > characters, and insignificant whitespace. -- This message was sent by Atlassian Jira (v8.20.10#820010)