Gradle,Tika - 排除一些使 "fat jar" 太胖的依赖包

Gradle, Tika - Exclude some dependency packages making a "fat jar" too fat

我正在制作一个应用程序,它可以在一些众所周知的文档格式(.docx、.odt、.txt 等)上创建 Lucence 索引。

Tika 非常适合提取文本,但它似乎是使我的胖罐气球达到 62 MB 的罪魁祸首。

为了制作脂肪罐,我在 build.gradle:

中这样做
buildscript {
    repositories { jcenter() }
    dependencies { // fatjar
        classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4' }
}
apply plugin: 'com.github.johnrengelman.shadow'
shadowJar {
    baseName = project.name
    classifier = null
    version = project.version
}

task copyJarToBin(type: Copy) {
    from shadowJar
    into "D:/My Documents/Software projects/Operative/" + project.name
}

当我去的时候gradle dependencies,Tika 确实有数百个……其中大部分显然我不需要。

是否有一种已知的 Gradle 方法可以 excluding/filtering 排除某些依赖项?

Tika 特有:如果有人知道如何识别哪些依赖项处理哪些文件类型,那也将非常有用...

看看Gradle dependency management。您可以按模块、组或两者排除依赖项:

compile('library:with-a-lot-of-deps:1.0') {
    exclude module: 'weird-extension'
    exclude group: 'microsoft-extensions'
    exclude group: 'adobe-extensions', module: 'pdf-extension' 
}

您还可以从所有配置中删除依赖项:

configurations {
    all*.exclude group: 'all-the-unneeded-extensions'
}

不知道 Tika,但这可能是一个单独的问题。阅读 Tika 文档并检查 Jars 中的 META-INF 目录可能是个好主意。