diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java index e28a57a89e..fe3f4db276 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java @@ -44,6 +44,10 @@ private static class CacheKey private final List files; + private final List timestamps; + + private final List sizes; + private final List ids; private final int hashCode; @@ -51,15 +55,21 @@ private static class CacheKey public CacheKey( List extensionArtifacts ) { this.files = new ArrayList( extensionArtifacts.size() ); + this.timestamps = new ArrayList( extensionArtifacts.size() ); + this.sizes = new ArrayList( extensionArtifacts.size() ); this.ids = new ArrayList( extensionArtifacts.size() ); for ( Artifact artifact : extensionArtifacts ) { - files.add( artifact.getFile() ); + File file = artifact.getFile(); + files.add( file ); + timestamps.add( ( file != null ) ? Long.valueOf( file.lastModified() ) : Long.valueOf( 0 ) ); + sizes.add( ( file != null ) ? Long.valueOf( file.length() ) : Long.valueOf( 0 ) ); ids.add( artifact.getVersion() ); } - this.hashCode = files.hashCode() * 31 + ids.hashCode(); + this.hashCode = + 31 * files.hashCode() + 31 * ids.hashCode() + 31 * timestamps.hashCode() + 31 * sizes.hashCode(); } @Override @@ -83,7 +93,8 @@ public boolean equals( Object o ) CacheKey other = (CacheKey) o; - return files.equals( other.files ) && ids.equals( other.ids ); + return ids.equals( other.ids ) && files.equals( other.files ) && timestamps.equals( other.timestamps ) + && sizes.equals( other.sizes ); } }