我曾经在本地tomcat服务器上部署我的WAR,并在tomcat的lib
文件夹中有一个jackson-core.jar。现在,我已经切换到maven并使用了jetty插件。
除了得到406 error - The server responded with 406 error (Not acceptable)
之外,一切正常。我知道错误即将发生,因为app server(jetty)中没有jackson-core.jar。
问题:
如何将jar放在嵌入式jetty的lib文件夹中,就像我为独立的tomcat服务器所做的那样。这可能吗?
我尝试过以下方法:
<configuration>
<scanIntervalSeconds>5</scanIntervalSeconds>
<webAppConfig>
<contextPath>/myapp</contextPath>
<extraClasspath>/Users/myuser/Downloads/jackson-core-2.1.0.jar</extraClasspath>
</webAppConfig>
</configuration>
答案 0 :(得分:13)
您可以通过向插件定义添加<dependencies>
部分来修改插件的类路径(而不是项目的类路径)。 e.g。
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.0.4.v20111024</version><!-- or whatever version you specified -->
<configuration>
...
</configuration>
...
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
...
</plugin>
...
</plugins>
...
</build>
...
</project>
现在您可能正在使用较旧版本的Jackson,甚至是较旧的API(它存在于不同的GroupId:ArtifactId,因为它破坏了向后兼容性),因此您需要进行自己的研究以确保您选择了正确的之一。
大多数更高级的插件都使用添加<plugin>
范围依赖项的一般原则。有一两个次要问题,即你要覆盖插件本身的依赖关系,即你要添加的依赖关系的groupId:artifactId与插件中声明的依赖关系的groupId:artifactId匹配的位置&#39 ; s pom,你的参赛作品会有预防性,如果你把版本降低,你可能会破坏插件......但对于码头和杰克逊来说情况并非如此。
使用jetty的另一个具体问题是当你引入slf4j-api依赖时,jetty将尝试使用它进行日志记录,并在slf4j的API的一个小区域中给出一些重大的API更改(特别是如果您不使用属于slf4j版本的slf4j- _ jar套件,那么您可能会遇到问题。使用是为了与...合作。
答案 1 :(得分:2)
只需将依赖项添加到插件的<dependencies/>
部分即可。应该这样做。