为maven添加jar到jetty插件

时间:2012-10-21 22:52:36

标签: tomcat maven embedded-jetty maven-jetty-plugin

我曾经在本地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>

2 个答案:

答案 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/>部分即可。应该这样做。