为maven添加jar到jetty插件

bir*_*rdy 6 tomcat embedded-jetty maven maven-jetty-plugin

我曾经在本地tomcat服务器上部署我的WAR,并在libtomcat 的文件夹中有一个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>
Run Code Online (Sandbox Code Playgroud)

Ste*_*lly 13

您可以通过向<dependencies>插件定义添加一个部分来修改插件的类路径(而不是项目的类路径).例如

<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>
Run Code Online (Sandbox Code Playgroud)

现在你可能正在使用较旧版本的Jackson,甚至是较旧的API(它存在于不同的GroupId:ArtifactId,因为它破坏了向后兼容性),所以你需要做自己的研究以确保你选择了正确的.

<plugin>大多数更高级的插件都使用添加范围依赖关系的一般原则.有一两个小问题,即你要覆盖插件本身的依赖关系,即你要添加的依赖关系的groupId:artifactId匹配插件的pom中声明的依赖关系的groupId:artifactId,你的条目将占用预防性,如果你拉低版本,你可能会破坏插件...但对于码头和杰克逊来说情况并非如此.

使用jetty的另一个具体问题是当你引入slf4j-api依赖时,jetty将尝试使用它进行日志记录,并在slf4j的API的一个小区域中给出一些重大的API更改(特别是与编写日志记录适配器 - 如果您不使用属于slf4j版本的slf4j- _ jars 套件,您正在使用的jetty版本可以使用,那么您可能会遇到问题.