Gradle, Tika - Исключите некоторые пакеты зависимостей, делающие толстую банку слишком толстой.

Я делаю приложение, которое создает индексы Lucence для нескольких известных форматов документов (.docx, .odt, .txt и т. д.).

Tika идеальна для извлечения текста, но, похоже, она является виновником увеличения размера моей толстой банки до 62 МБ.

Чтобы сделать толстую банку, я делаю это в своем 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, у Тики действительно появляются сотни... очевидно, что большинство из них мне не нужны.

Есть ли известный способ Gradle исключения/фильтрации определенных зависимостей?

Конкретно для Tika: если кто-нибудь знает, как определить, какие зависимости обрабатывают какие типы файлов, это тоже было бы очень полезно...


person mike rodent    schedule 19.02.2017    source источник
comment
Можно ли использовать ветку Tika 2.x? Модули парсера в версии 2.x немного более модульные.   -  person Gagravarr    schedule 20.02.2017
comment
Спасибо... на сайте нет упоминания о Tika 2: последняя стабильная версия от октября прошлого года - 1.14. Вы, похоже, инсайдер: можете дать мне ссылку или сказать, что с этим происходит?   -  person mike rodent    schedule 20.02.2017
comment
Официального релиза Tika 2.x еще нет, так как еще предстоит внести некоторые другие критические изменения API. Однако часть рефакторинга парсера завершена. См. wiki.apache.org/tika/Tika2_0RoadMap для получения подробной информации и ссылок на версию 2.x. исходный код для самостоятельной сборки   -  person Gagravarr    schedule 20.02.2017
comment
Хорошо, спасибо. Есть ли у вас какой-либо совет или ссылка, которые позволят мне попытаться выяснить, какие зависимости я могу безопасно исключить, основываясь на типах файлов, которые я рассматриваю и не собираюсь охватывать (я имею в виду для Tika 1.x или Tika 2.x)?   -  person mike rodent    schedule 20.02.2017
comment
Просмотрите модули парсера, доступные в версии 2, у них обычно разумные имена, сравните их с нужными форматами!   -  person Gagravarr    schedule 20.02.2017
comment
@Gagravarr Это (модули парсера в Tika 2) все еще актуально? Я вижу, что это не было совершено с 2017 года.   -  person theyuv    schedule 10.06.2019


Ответы (1)


Взгляните на управление зависимостями Gradle. Вы можете исключить зависимости по модулю, группе или обоим:

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 и проверить каталог META-INF в Jars.

person MartinTeeVarga    schedule 19.02.2017