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