Сверяем файлы сборки и находим расхождения!
Сверяем файлы сборки и находим расхождения! После копирования приложения можно проверить, что файлы совпадают с исходной сборкой. Напишем небольшую проверку двух каталогов, которая найдёт отсутствующие и изменённые файлы, не загружая их целиком в память. Обойдём файлы без загрузки всего списка в память и закроем поток после проверки. Символические ссылки отфильтруем через LinkOption.NOFOLLOW_LINKS: try (Stream<Path> files = Files.walk(buildDir)) { Iterator<Path> paths = files.filter(path -> Files.isRegularFile(path, NOFOLLOW_LINKS)).iterator(); while (paths.hasNext()) compare(paths.next(), buildDir, deployDir); } Для каждого файла строим такой же относительный путь в каталоге развёртывания. Это сохраняет структуру вложенных папок: Path relative = buildDir.relativize(source); Path deployed = deployDir.resolve(relative); Отсутствующий файл отмечаем отдельно, иначе проверка совпадения не сможет отличить его от пустого файла: if (!Files.isRegularFile(deployed)) { reportMissing(relative); return; } Для существующих файлов используем Files.mismatch. Метод читает содержимое по мере необходимости и возвращает позицию первого различия, а -1 означает полное совпадение: long offset = Files.mismatch(source, deployed); if (offset == -1) reportMatch(relative); else reportDifference(relative, offset); Можно добавить обратный проход по каталогу развёртывания, если нужно также находить лишние файлы. Java Библиотека | Мы в Телеграм