diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Md5.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Md5.kt index 339efaa1..6cfb4832 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Md5.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Md5.kt @@ -18,7 +18,13 @@ public class Md5 { // return DatatypeConverter.printHexBinary(md5.digest()).toLowerCase() // } - fun toMd5Directories(directories: List) : String? { + /** + * Calculate a checksum for all the files under the passed directories. The conversion from File to + * bytes can be customized by the @param{toBytes} parameter. The default implementation calculates + * a checksum of the last modified timestamp. + */ + fun toMd5Directories(directories: List, + toBytes: (File) -> ByteArray = { it.lastModified().toString().toByteArray() } ): String? { val ds = directories.filter { it.exists() } if (ds.size > 0) { MessageDigest.getInstance("MD5").let { md5 -> @@ -37,7 +43,7 @@ public class Md5 { it.isFile }.forEach { fileCount++ - val bytes = it.readBytes() + val bytes = toBytes(it) md5.update(bytes, 0, bytes.size) } }