Слишком большой размер зависимостей Swagger-core Scala

Я обнаружил, что после того, как я начал использовать инструмент документации swagger для своего REST API, размер моего файла войны увеличился почти в 4,5 раза, с 8,7 МБ до 39 МБ. Я использую Maven для создания проекта.

Это из-за большого размера зависимостей Swagger Scala, особенно scala-компилятора. Поэтому я пытался выяснить, какие из этих зависимостей на самом деле не нужны. Я создал новую задачу на странице проекта Github: https://github.com/wordnik/swagger-core/issues/624 Они ответили, что не рекомендуется удалять любую зависимость от scala, так как фреймворк написан на этом языке, и это может его сломать. Также рекомендуется в качестве обходного пути размещать зависимости в контейнере/сервере, а не внутри войны.


person raspacorp    schedule 12.08.2014    source источник


Ответы (1)


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

    <dependency>
        <groupId>com.wordnik</groupId>
        <artifactId>swagger-jersey2-jaxrs_2.10</artifactId>
        <version>${swagger-jersey.version}</version>
        <exclusions>
            <exclusion>
                <artifactId>jackson-module-scala_2.10</artifactId>
                <groupId>com.fasterxml.jackson.module</groupId>
            </exclusion>
            <exclusion>
                <artifactId>scalap</artifactId>
                <groupId>org.scala-lang</groupId>
            </exclusion>
        </exclusions>
    </dependency>

Это удаляет в основном три больших банка: scalap, scala-compiler и scala-reflect. Это означает почти 19 МБ уменьшенного размера.

Я не говорю, что не стоит следовать совету разработчиков из команды Swagger о том, чтобы не удалять scala-зависимости, но пока у меня это работает, и я хотел этим поделиться. Я сделал свои комментарии и закрыл проблему на Github: https://github.com/wordnik/swagger-core/issues/624

person raspacorp    schedule 12.08.2014
comment
я использую swagger-jaxrs_2.1 не с трикотажем, и удаление scala libs вызывает исключения ClassNotFound во время выполнения - person To Kra; 16.12.2014
comment
Он может генерировать исключения ClassNotFoundException в зависимости от того, что вы используете из API Swagger, например, я получил некоторые из них при попытке переопределить модели с помощью OverrideConverter и ModelConverters. Если вы не используете этот тип настройки, все работает правильно. - person raspacorp; 29.12.2014
comment
К сожалению, это не работает с swagger-jersey2-jaxrs_2.11. - person Vilmantas Baranauskas; 15.01.2015
comment
Спасибо за это. Я нашел ту же проблему в моей войне. Бьюсь об заклад, та же самая функциональность может быть написана в хорошей простой, удобной в сопровождении, удобочитаемой реализации Java при 1/1000 накладных расходов этого программного обеспечения Scala. Может, я так и сделаю... - person Alex Worden; 26.04.2015