Как устранить предупреждения «отсканированные из разных мест», вызванные трикотажем - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть проект Google App Engine, который я создаю с помощью Maven.Я добавил к нему jax-rs, добавив в свой pom следующую бомбу:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-bom</artifactId>
            <version>0.73.0-alpha</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>2.27</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Также мне были нужны эти три зависимости:

    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <exclusions>
            <exclusion><!-- Exclude this repackaged javax.inject. -->
                <groupId>org.glassfish.hk2.external</groupId>
                <artifactId>javax.inject</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.inject</groupId>
        <artifactId>jersey-hk2</artifactId>
        <exclusions>
            <exclusion><!-- Exclude this repackaged javax.inject. -->
                <groupId>org.glassfish.hk2.external</groupId>
                <artifactId>javax.inject</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-binding</artifactId>
    </dependency>

Как видите, я исключил некоторые изперепакованный, чтобы избавиться от некоторых предупреждений во время выполнения о найденных дубликатах классов.Чтобы быть ясным, каждый остальной вызов с использованием jax-rs API работает нормально, и я не вижу предупреждений на самом движке приложений Google, только локально.(полный код на https://github.com/Leejjon/blindpool) При запуске в локальной среде выполнения Jetty с использованием mvn appengine: run, он по-прежнему жалуется на каждый связанный с json класс в javax.json-1.1.jar и javax.json-api-1.1.jar.

Пример

[INFO] GCLOUD: 2018-12-11 22:01:13.495:WARN:oeja.AnnotationParser:main: Unknown asm implementation version, assuming version 393216

[INFO] GCLOUD: 2018-12-11 22:01:13.780:WARN:oeja.AnnotationParser:qtp551734240-15: javax.json.Json scanned from multiple locations: jar:file:///C:/Users/Leejjon/IdeaProjects/Blindpool/backend/target/blindpool-1.0-SNAPSHOT/WEB-INF/lib/javax.json-api-1.1.jar!/javax/json/Json.class, jar:file:///C:/Users/Leejjon/IdeaProjects/Blindpool/backend/target/blindpool-1.0-SNAPSHOT/WEB-INF/lib/javax.json-1.1.jar!/javax/json/Json.class

Когда я смотрю на мой вывод 'mvn dependency: tree', я вижу, что моя зависимость 'jersey-media-json-binding' имеет оба javax.json-1.1 и javax.json-api-1.1 в нем. И у них есть классы с одинаковыми именами.

[INFO] +- org.glassfish.jersey.media:jersey-media-json-binding:jar:2.27:compile
[INFO] |  +- org.glassfish:javax.json:jar:1.1:compile
[INFO] |  +- org.eclipse:yasson:jar:1.0:compile
[INFO] |  |  +- javax.json:javax.json-api:jar:1.1:compile
[INFO] |  |  \- javax.enterprise:cdi-api:jar:2.0:compile
[INFO] |  |     +- javax.el:javax.el-api:jar:3.0.0:compile
[INFO] |  |     \- javax.interceptor:javax.interceptor-api:jar:1.2:compile
[INFO] |  \- javax.json.bind:javax.json.bind-api:jar:1.0:compile

Полное дерево зависимостей (https://pastebin.com/JfwzavDX).

Я пыталсяисключить их, но не смог сделать это таким образом, чтобы я не сломал свое веб-приложение и не получил таких ошибок, как: javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.ExceptionInInitializerError

TLDR: Какую зависимость я исключаю здесь, чтобы избавиться от дублированного предупреждения о местоположении, выдаваемого командой 'mvn appengine: run', не прерывая приложение jax-rs.

Надеясь на этот jax-rs / maven / jetty / jersey / google app eБоже мой, чтобы пройти и указать мне в правильном направлении:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...