private static String calculateCoreExtensionsDiscriminator()

in client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java [481:518]


    private static String calculateCoreExtensionsDiscriminator(
            Path multiModuleProjectDirectory, Path userHome, Path mvndHome) {
        try {
            Path projectExtensionsXml = multiModuleProjectDirectory
                    .resolve(".mvn")
                    .resolve("extensions.xml")
                    .toAbsolutePath()
                    .normalize();
            Path userExtensionsXml = userHome.resolve(".m2")
                    .resolve("extensions.xml")
                    .toAbsolutePath()
                    .normalize();
            Path installationExtensionsXml = mvndHome.resolve("mvn")
                    .resolve("conf")
                    .resolve("extensions.xml")
                    .toAbsolutePath()
                    .normalize();

            String blob = "";
            if (Files.exists(projectExtensionsXml)) {
                blob += projectExtensionsXml.toString();
                blob += Files.readString(projectExtensionsXml);
            }
            if (Files.exists(userExtensionsXml)) {
                blob += userExtensionsXml.toString();
                blob += Files.readString(userExtensionsXml);
            }
            if (Files.exists(installationExtensionsXml)) {
                blob += installationExtensionsXml.toString();
                blob += Files.readString(installationExtensionsXml);
            }
            MessageDigest digest = MessageDigest.getInstance("SHA-1");
            digest.update(blob.getBytes(StandardCharsets.UTF_8));
            return HexFormat.of().formatHex(digest.digest());
        } catch (Exception e) {
            throw new IllegalStateException("Cannot calculate core extensions discriminator", e);
        }
    }