Dropwizard,swagger和内存中的hiverunner / hiveqlunit集成

时间:2016-11-01 18:46:06

标签: maven reflection hive swagger dropwizard

在为hive dropwizard应用编写测试时,我在尝试运行内存swagger时遇到了一些麻烦。我尝试了hiverunnerhiveqlunit

有两种类型的测试。一个用于使用dropwizard集成测试来测试swagger / dropwizard个API端点(这里不需要hive),另一个是用于测试hive集成的地方我需要点击api并设置一个内存hive来查询和验证数据是否存储在hiveDB(psql)中。

两个内存中hive依赖项(请注意,我一次使用一个)始终与现有的dropwizardswagger依赖项存在某种冲突。我猜这与jersey有关,但我尝试了很多事情但仍然没有运气。

如果我没有点击hive api,我可以在内存中CRUD运行就好并执行所有dropwizard/swagger。但我现在无法让这两项服务同时发挥作用。

Maven中的版本:

io.dropwizard:dropwizard-core version: 0.9.2
com.smoketurner:dropwizard-swagger version: 0.9.2-3
com.facebook.presto.hive:hive-apache-jdbc version: 0.13.1-3

com.klarna:hiverunner version: 3.0.0
OR
org.finra.hiveqlunit:hiveQLUnit version: 1.0

dropwizard-swagger使用org.reflections:reflections:jar:0.9.10com.klarna:hiverunner使用org.reflections:reflections:jar:0.9.8

当我没有排除任何内容时,我得到以下内容:

java.lang.NoSuchMethodError: org.reflections.util.ClasspathHelper.forPackage(Ljava/lang/String;[Ljava/lang/ClassLoader;)Ljava/util/Collection;

所以我尝试从org.reflections:reflections排除hiverunner,我得到了3 Exceptions

java.lang.RuntimeException: javax.servlet.ServletException: io.dropwizard.jersey.setup.JerseyServletContainer-73437222@8a344094==io.dropwizard.jersey.setup.JerseyServletContainer,1,false
Caused by: A MultiException has 3 exceptions.  They are:
1. java.lang.NullPointerException
2. java.lang.IllegalStateException: Unable to perform operation: method inject on com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$App
3. java.lang.IllegalStateException: Unable to perform operation: create on org.glassfish.jersey.message.internal.MessageBodyFactory

然后我尝试从org.reflections:reflections中排除dropwizard-swagger,并通过向org.reflections:reflections添加以下依赖项为pom.xml添加了单独的依赖项:

<dependency>
    <groupId>org.reflections</groupId>
    <artifactId>reflections</artifactId>
    <version>0.9.10</version>
</dependency>

得到以下内容:

java.lang.NoClassDefFoundError: com/google/common/base/MoreObjects

所以我添加了最新的guava(版本20.0),然后它又给了我一个错误。这似乎是依赖地狱。

以前有没有人遇到过这个问题?似乎dropwizardhiverunner不能很好地发挥作用。也许它与jersey 1&amp;的版本控制有关。 2。

我在jackson-databind时遇到了一些其他错误,所以我做了一些研究,发现我必须为以下依赖项提供相同的版本:

com.fasterxml.jackson.core:jackson-databind (from `dropwizard`)
com.fasterxml.jackson.module:jackson-module-scala (from `hiverunner/hiveqlunit`)

现在我又回到了之前的3 Exceptions ...

任何帮助将不胜感激。

编辑: 发现hiveqlunit正在使用以下内容:

com.sun.jersey:jersey-server:jar:1.9

在转移到以下maven依赖项之前,这是最后一个版本之一:

org.glassfish.jersey.core:jersey-server

dropwizard org.glassfish.jersey.core:jersey-server:jar:2.22.

发生冲突

我该如何解决这个冲突?

0 个答案:

没有答案