DEV Community

Query Filter
Query Filter

Posted on

dupl

task checkDuplicateClasses {
    doLast {
        def classMap = [:]
        def duplicatesFound = false

        configurations.runtimeClasspath.each { file ->
            if (file.name.endsWith('.jar')) {
                def zip = new java.util.zip.ZipFile(file)
                zip.entries().each { entry ->
                    if (entry.name.endsWith('.class')) {
                        if (classMap.containsKey(entry.name)) {
                            println "CONFLICT: ${entry.name}"
                            println "  -> Found in: ${classMap[entry.name]}"
                            println "  -> Also in:  ${file.name}"
                            println "--------------------------------------"
                            duplicatesFound = true
                        } else {
                            classMap[entry.name] = file.name
                        }
                    }
                }
                zip.close()
            }
        }

        if (!duplicatesFound) {
            println "No duplicate classes found in runtime classpath! ✅"
        } else {
            throw new GradleException("Build failed: Duplicate classes detected. Check logs above.")
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)