2011-09-10 47 views
7

我目前正在開發一個使用Jersey for REST的Web應用程序。我使用maven,stax-api-1.0.1和1.0.2都被拉入我的web-inf/lib中。我以爲stax api是JDK1.6的一個aprt?使用JDK 1.6時,我的web應用程序中是否需要stax-api-1.0.x?

爲什麼這些JARS包含在我的Web應用程序中?

這裏是我的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.glennbech</groupId> 
    <artifactId>simplerest</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>Simplerest Maven Webapp. Very simple REST.</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
     <!-- Jersey for REST --> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.9</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-json</artifactId> 
      <version>1.9</version> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.17</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>simplerest</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.mortbay.jetty</groupId> 
       <artifactId>maven-jetty-plugin</artifactId> 
       <version>6.1.25</version> 
       <configuration> 
        <contextPath>/</contextPath> 
        <scanIntervalSeconds>5</scanIntervalSeconds> 
       </configuration> 
      </plugin> 
     </plugins> 

</build> 

+0

您可以發佈您的pom.xml?這取決於你的依賴關係(呃)。 –

+0

我發佈了我的pom.xml,但是我的問題實際上是爲什麼我需要在我的web-inf lib中使用Stax-api jar。我認爲stax是JDK1.6的一部分? –

+2

stax包含在Java 1.6中,但Maven並不知道您正在將您的應用程序部署到Java 1.6運行時。你的依賴關係也不知道你正在使用什麼運行時。事實上,他們可能已經專門編寫了Java 1.5或更早的版本。 –

回答

6

這個問題得到回答的問題的註釋字段。榮譽保羅格里姆。

stax包含在Java 1.6中,但Maven並不知道您正在將您的應用程序部署到Java 1.6運行時。你的依賴關係也不知道你正在使用什麼運行時。事實上,他們可能已經專門編寫了Java 1.5或更早的版本。

是的,[修復它使用maven排除]將是最簡單的解決方案國際海事組織。下一步可能是爲不同的目標運行時創建不同的配置文件。例如。一個「1.6」的個人資料將排除STAX等,而是一個「1.5」的個人資料會離開他們進來。

5
<dependency> 
    <groupId>the.thing.that</groupId> 
    <artifactId>transitively-imports</artifactId> 
    <version>the.stax.version</version> 
    <exclusions> 
    <!-- STAX comes with Java 1.6 --> 
    <exclusion> 
     <artifactId>stax-api</artifactId> 
     <groupId>javax.xml.stream</groupId> 
    </exclusion> 
    <exclusion> 
     <artifactId>stax-api</artifactId> 
     <groupId>stax</groupId> 
    </exclusion> 
    </exclusions> 
<dependency> 
+0

這是我的問題(可能)正確的解決方案。謝謝。 –

相關問題