我已经有一段时间没有做过大量的编码了,所以请原谅我的一些基本问题!
我正试图为亚特兰西安合流编写一个插件,它与另一个第三方平台集成在一起。这个第三方平台提供了一个可以与REST一起使用的SDK库。这是一件很方便的事情,因为我真的只是试图快速原型一个概念。我使用的是Java1.8、IntelliJ、Maven和Confluence5.8。
这里是我的第一个问题-第三方SDK库,我想把它作为一个依赖项包含在它自己的依赖项中。除其他外,这就是一个例子:
<!-- HTTP client: jersey-client -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey-version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>${jersey-version}</version>
</dependency>
<!-- JSON processing: jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson-version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson-version}</version>
</dependency>还在继续,但你明白了。我的第一个问题是,如果不将SDK的所有依赖项添加到我自己的项目中,就无法成功地添加第三方SDK库和要编译的项目。是预期的吗?,它大大膨胀了我的罐子的大小。
这导致了下一个问题。Confluence已经使用了一个更老的和亚特兰西岛定制版本的泽西库(1.8亚特兰-16),我怀疑它与SDK库使用的较新的泽西库(1.19.1)发生了冲突。如果我在我的项目中指定亚特兰西安泽西版本,它会编译和安装,但当我试图运行它时,它会失败。如果我指定SDK库使用的泽西版本,它会编译但没有正确安装。,我能做些什么来解决泽西库版本的差异,以便我可以在我的项目中使用SDK库吗?
如果请求,我将提供错误详细信息,但我很确定这与泽西版本的冲突有关,因为这两种情况下的错误都是针对泽西类的"NoSuchMethod“和类强制转换异常。
发布于 2016-08-16 03:36:47
发布于 2016-08-16 03:38:25
您可以使用一些工具重新打包第三方SDK及其依赖项,重命名包名以避免与confluence自己的jar文件发生冲突。
例如,扎贾尔。
或者更好,使用maven遮阳插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<relocations>
<relocation>
<pattern>org.codehaus.plexus.util</pattern>
<shadedPattern>org.shaded.plexus.util</shadedPattern>
<excludes>
<exclude>org.codehaus.plexus.util.xml.Xpp3Dom</exclude>
<exclude>org.codehaus.plexus.util.xml.pull.*</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>这指示插件将类从包org.codehaus.plexus.util及其子包移动到包org.shaded.plexus.util中,方法是移动相应的JAR文件条目并重写受影响的字节码。类Xpp3Dom和其他类将保留在原来的包中。
https://stackoverflow.com/questions/38966100
复制相似问题