2011-09-10 9 views
7

Attualmente sto sviluppando un'applicazione web che utilizza Jersey per REST. Uso Maven, e sia stax-api-1.0.1 che 1.0.2 sono inseriti nel mio web-inf/lib. Pensavo che la stax api fosse un aprile di JDK1.6?Ho bisogno di stax-api-1.0.x nella mia app Web quando utilizzo JDK 1.6?

Perché questi JARS sono inclusi nella mia applicazione web?

Ecco il mio 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

potete inviare i vostri pom.xml? Questo dipende (hur hur) dalle tue dipendenze. –

+0

Ho postato il mio pom.xml, ma la mia domanda è davvero il motivo per cui avrei bisogno dei barattoli di Stax-api nella mia web-lib inf. Pensavo che stax fosse parte di JDK1.6? –

+2

stax viene incluso in Java 1.6, ma Maven non sa che stai distribuendo la tua app su un Java 1.6 runtime. Né le tue dipendenze sanno quale runtime stai usando. In effetti, potrebbero essere stati scritti appositamente per funzionare con Java 1.5 o anche prima. –

risposta

6

La questione è stata risolta in campo commento della domanda. Complimenti a Paul Grime.

stax viene incluso in Java 1.6, ma Maven non sa che si sta distribuendo l'app su un runtime di Java 1.6. Né le tue dipendenze sanno quale runtime stai usando. In effetti, potrebbero essere stati scritti appositamente per funzionare con Java 1.5 o anche prima.

Sì, [ripararlo usando le esclusioni Maven] sarebbe la soluzione più semplice IMO. Un passo successivo potrebbe essere quello di creare profili diversi per i diversi runtime target. Per esempio. un "1.6" profilo escluderebbe Stax, ecc, ma un "1.5" profilo li avrebbe lasciati in.

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

Questa è una soluzione (probabilmente) corretta per il mio problema. Grazie. –

Problemi correlati