1. import java.io.File;
  2. import java.time.LocalDateTime;
  3. import java.time.Duration;
  4. import java.util.stream.Stream;
  5. public class ArtifactCleanup {
  6. private static final int MAX_AGE_DAYS = 30; // Maximum age in days for artifacts
  7. private static final String BASE_DIR = "/path/to/legacy/project"; // Replace with your project's root directory
  8. public static void main(String[] args) {
  9. cleanupArtifacts(BASE_DIR);
  10. }
  11. public static void cleanupArtifacts(String baseDir) {
  12. File projectDir = new File(baseDir);
  13. if (!projectDir.exists() || !projectDir.isDirectory()) {
  14. System.err.println("Invalid project directory: " + baseDir);
  15. return;
  16. }
  17. // Iterate through all files and directories within the project
  18. Stream<File> fileStream = Stream.iterate(projectDir.listFiles())
  19. .filter(listFiles -> listFiles != null) //handle null list
  20. .flatMap(ifac -> java.util.Arrays.stream(ifac));
  21. fileStream.forEach(file -> {
  22. if (file.isFile()) {
  23. // Check file modification timestamp
  24. if (isArtifactOlderThanLimit(file)) {
  25. try {
  26. if (file.delete()) {
  27. System.out.println("Deleted artifact: " + file.getAbsolutePath());
  28. } else {
  29. System.err.println("Failed to delete artifact: " + file.getAbsolutePath());
  30. }
  31. } catch (Exception e) {
  32. System.err.println("Error deleting artifact " + file.getAbsolutePath() + ": " + e.getMessage());
  33. }
  34. }
  35. } else if (file.isDirectory()) {
  36. // Recursively clean up subdirectories
  37. cleanupArtifacts(file.getAbsolutePath());
  38. }
  39. });
  40. }
  41. private static boolean isArtifactOlderThanLimit(File file) {
  42. // Calculate the age of the file in days
  43. LocalDateTime lastModified = LocalDateTime.ofInstant(file.lastModifiedLocally(), java.time.Zone.systemDefault());
  44. Duration age = Duration.between(lastModified, LocalDateTime.now());
  45. // Check if the age exceeds the maximum allowed days
  46. return age.toDays() > MAX_AGE_DAYS;
  47. }
  48. }

Add your comment