[ 
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)

Reply via email to