You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.7 KiB
Groovy
45 lines
1.7 KiB
Groovy
package org.xbib.gradle.plugin.shadow.internal
|
|
|
|
import org.objectweb.asm.ClassReader
|
|
|
|
import java.util.jar.JarEntry
|
|
import java.util.jar.JarInputStream
|
|
|
|
class DependencyUtils {
|
|
|
|
static Collection<String> getDependenciesOfJar(InputStream is ) throws IOException {
|
|
Set<String> dependencies = []
|
|
JarInputStream inputStream = new JarInputStream(is)
|
|
inputStream.withCloseable {
|
|
while (true) {
|
|
JarEntry entry = inputStream.getNextJarEntry()
|
|
if (entry == null) {
|
|
break
|
|
}
|
|
if (entry.isDirectory()) {
|
|
inputStream.readAllBytes()
|
|
continue
|
|
}
|
|
if (entry.getName().endsWith('.class')) {
|
|
DependenciesClassRemapper dependenciesClassAdapter = new DependenciesClassRemapper()
|
|
new ClassReader(inputStream.readAllBytes()).accept(dependenciesClassAdapter, 0)
|
|
dependencies.addAll(dependenciesClassAdapter.getDependencies())
|
|
} else {
|
|
inputStream.readAllBytes()
|
|
}
|
|
}
|
|
}
|
|
dependencies
|
|
}
|
|
|
|
static Collection<String> getDependenciesOfClass(InputStream is) throws IOException {
|
|
final DependenciesClassRemapper dependenciesClassAdapter = new DependenciesClassRemapper()
|
|
new ClassReader(is.readAllBytes()).accept(dependenciesClassAdapter, ClassReader.EXPAND_FRAMES)
|
|
dependenciesClassAdapter.getDependencies()
|
|
}
|
|
|
|
static Collection<String> getDependenciesOfClass(Class<?> clazz) throws IOException {
|
|
getDependenciesOfClass(clazz.getResourceAsStream('/' + clazz.getName().replace('.', '/') + '.class'))
|
|
}
|
|
}
|