[ https://issues.apache.org/jira/browse/MCOMPILER-381?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17789667#comment-17789667 ]
ASF GitHub Bot commented on MCOMPILER-381: ------------------------------------------ jorsol commented on code in PR #181: URL: https://github.com/apache/maven-compiler-plugin/pull/181#discussion_r1404882575 ########## src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java: ########## @@ -1577,31 +1589,35 @@ protected boolean isDependencyChanged() { } /** - * @param classPathEntry entry to check + * @param file entry to check * @param buildStartTime time build start * @return if any changes occurred */ - private boolean hasNewFile(File classPathEntry, Date buildStartTime) { - if (!classPathEntry.exists()) { - return false; - } - - if (classPathEntry.isFile()) { - return classPathEntry.lastModified() >= buildStartTime.getTime() - && fileExtensions.contains(FileUtils.getExtension(classPathEntry.getName())); - } - - File[] children = classPathEntry.listFiles(); - - for (File child : children) { - if (hasNewFile(child, buildStartTime)) { - return true; + private boolean hasNewFile(Path file, Instant buildStartTime) { + if (Files.isRegularFile(file) && fileExtensions.contains(getFileExtension(file))) { + try { + Instant lastModifiedTime = + Files.getLastModifiedTime(file).toInstant().truncatedTo(ChronoUnit.MILLIS); + boolean isChanged = lastModifiedTime.isAfter(buildStartTime); + if (isChanged && (getLog().isDebugEnabled() || showCompilationChanges)) { + getLog().info("\tNew dependency detected: " + file.toAbsolutePath()); + } + return isChanged; + } catch (IOException ex) { + // we just cannot determine it, so don't do anything beside logging + getLog().warn("I/O error reading the lastModifiedTime: " + ex.getMessage()); } } return false; } + private static String getFileExtension(Path path) { Review Comment: I don't mind to make commons-io a direct dependency so will change this ASAP. I'm not on a computer right now, so I will need some time to make all the requested changes. Thanks for all the feedback! 👍 > Refactoring needed for isDependencyChanged / Using fileExtensions > (AbstractCompilerMojo) > ---------------------------------------------------------------------------------------- > > Key: MCOMPILER-381 > URL: https://issues.apache.org/jira/browse/MCOMPILER-381 > Project: Maven Compiler Plugin > Issue Type: Improvement > Affects Versions: 3.8.1 > Reporter: Karl Heinz Marbaise > Priority: Minor > Fix For: 3.12.0 > > > The code in the class AbstractCompilerMojo has a method > {{isDependencyChanged}} which uses the attribute {{fileExtensions}} which is > being changed within the {{isDependencyChanged}} method. This attribute is > also being used by the method {{hasNewFile}} which is a kind of confusing (a > control via a global variable). > Furthermore a change in {{isDependencyChanged}} where replacing {{".class"}} > with {{"class"}} results in a [fail which is described here|MCOMPILER-379]. > It should be investigated how this code can be made more clear and maybe > easier to understand. -- This message was sent by Atlassian Jira (v8.20.10#820010)