diff --git a/method-analyzer-core/build.gradle b/method-analyzer-core/build.gradle index 36b4242..8fde1d0 100644 --- a/method-analyzer-core/build.gradle +++ b/method-analyzer-core/build.gradle @@ -73,4 +73,82 @@ publishing { } } } -} \ No newline at end of file +} + + +// Force checksum generation +// Generate checksums after publishing +// Generate checksums and cleanup maven metadata after publishing +tasks.register('generateChecksumsAndCleanup') { + dependsOn 'publishMavenPublicationToMavenLocal' + + doLast { + def userHome = System.getProperty('user.home') + def localRepoPath = "${userHome}/.m2/repository" + def groupPath = project.group.toString().replace('.', '/') + def artifactDir = new File("${localRepoPath}/${groupPath}/${project.name}/${project.version}") + def artifactParentDir = new File("${localRepoPath}/${groupPath}/${project.name}") + + println "Processing ${project.name} in: ${artifactDir.absolutePath}" + + if (artifactDir.exists()) { + // Generate checksums for all relevant files + artifactDir.listFiles().findAll { file -> + file.isFile() && + (file.name.endsWith('.jar') || file.name.endsWith('.pom') || file.name.endsWith('.module')) && + !file.name.contains('maven-metadata') && + !file.name.endsWith('.asc') && // Skip signature files + !file.name.endsWith('.md5') && // Skip existing checksums + !file.name.endsWith('.sha1') // Skip existing checksums + }.each { file -> + generateChecksumsFor(file) + } + + // Clean up maven-metadata-local.xml files + cleanupMavenMetadata(artifactDir, artifactParentDir) + } + } +} + +def generateChecksumsFor(File file) { + // Generate MD5 + def md5File = new File(file.parentFile, "${file.name}.md5") + if (!md5File.exists()) { + def md5 = java.security.MessageDigest.getInstance('MD5') + file.eachByte(8192) { buffer, length -> + md5.update(buffer, 0, length) + } + md5File.text = md5.digest().collect { String.format('%02x', it & 0xff) }.join() + println "Generated MD5 for ${file.name}" + } + + // Generate SHA1 + def sha1File = new File(file.parentFile, "${file.name}.sha1") + if (!sha1File.exists()) { + def sha1 = java.security.MessageDigest.getInstance('SHA-1') + file.eachByte(8192) { buffer, length -> + sha1.update(buffer, 0, length) + } + sha1File.text = sha1.digest().collect { String.format('%02x', it & 0xff) }.join() + println "Generated SHA1 for ${file.name}" + } +} + +def cleanupMavenMetadata(File versionDir, File artifactDir) { + // Delete maven-metadata-local.xml from version directory (e.g., 1.0.7-SNAPSHOT/) + def versionMetadataFile = new File(versionDir, 'maven-metadata-local.xml') + if (versionMetadataFile.exists()) { + boolean deleted = versionMetadataFile.delete() + println "Deleted maven-metadata-local.xml from version directory: ${deleted ? 'SUCCESS' : 'FAILED'}" + } + + // Delete maven-metadata-local.xml from artifact directory (e.g., method-analyzer-core/) + def artifactMetadataFile = new File(artifactDir, 'maven-metadata-local.xml') + if (artifactMetadataFile.exists()) { + boolean deleted = artifactMetadataFile.delete() + println "Deleted maven-metadata-local.xml from artifact directory: ${deleted ? 'SUCCESS' : 'FAILED'}" + } +} + +// Chain the tasks +publishToMavenLocal.finalizedBy generateChecksumsAndCleanup \ No newline at end of file