2012-03-05 16 views
11

Pracując nad moim 1.6.0_16 JDK, wygenerowałem moje klasy pośredniczące z pliku WSDL przy użyciu Apache CXF 2.5.2, który używa najnowszego jaxb-api 2.2. Wiem, że można go używać jaxb-api 2.1, ale w celu uniknięcia problemów ze zgodnością wolałbym, aby używał bieżącej wersji. Ponieważ moje cechy JAXB JDK 2.1, kompilacja nie powiedzie się z następującym komunikatem:Dołącz JAXB przy użyciu Maven

error at @XmlElementRef(name = "protocol", namespace = "urn:ch.beo.emc", type = JAXBElement.class, required = false) 

Dlatego starałem się zrobić Maven obejmują najnowszą api JAXB i Impl wykonując następujące zależności.

<dependency> 
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId> 
    <version>2.2.5</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-impl</artifactId> 
    <version>2.2.5</version> 
</dependency> 

Podczas gdy dwa słoiki zostały dodane do Maven współzależności w Eclipse, komunikat o błędzie nadal występuje zarówno w Eclipse i Maven kompilacji.

Jak mogę włączyć te słoiki do mojej kompilacji Mavena i zastosować je zarówno w środowisku Eclipse, jak iw systemie docelowym?


PS: Proszę Znajdź pełna POM tutaj:

<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>ch.beo</groupId> 
    <artifactId>emc.front</artifactId> 
    <version>3.1.3-SNAPSHOT</version> 
    <repositories> 
     <repository> 
      <id>jboss</id> 
      <name>JBoss</name> 
      <url>http://repository.jboss.org/maven2/</url> 
     </repository> 
     <repository> 
      <id>freehep</id> 
      <name>Freehep</name> 
      <url>http://java.freehep.org/maven2</url> 
     </repository> 
     <repository> 
      <id>JCurl</id> 
      <url>http://jcurl.berlios.de/m2/repo</url> 
     </repository> 
     <repository> 
      <id>JavaNet</id> 
      <url>http://download.java.net/maven/2/</url> 
     </repository> 
     <repository> 
      <id>djmaven2</id> 
      <url>http://www.fdvs.com.ar/djmaven2</url> 
      <name>DynamicJasper public Repository</name> 
     </repository> 
    </repositories> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <build> 
     <defaultGoal>compile</defaultGoal> 
     <sourceDirectory>src/main/java</sourceDirectory> 
     <testSourceDirectory>src/test/java</testSourceDirectory> 
     <outputDirectory>target/main</outputDirectory> 
     <testOutputDirectory>target/test</testOutputDirectory> 
     <resources> 
      <resource> 
       <targetPath>ch/beo/emc/front/resources</targetPath> 
       <directory>src/main/resources</directory> 
       <excludes> 
        <exclude>src/main/resources/security/jarsign</exclude> 
       </excludes> 
      </resource> 
     </resources> 
     <testResources> 
      <testResource> 
       <targetPath>ch/beo/emc/front/resources</targetPath> 
       <directory>src/test/resources</directory> 
      </testResource> 
      <testResource> 
       <targetPath>ch/beo/emc/front/resources</targetPath> 
       <directory>src/main/resources</directory> 
       <excludes> 
        <exclude>src/main/resources/security/jarsign</exclude> 
       </excludes> 
      </testResource> 
     </testResources> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>aspectj-maven-plugin</artifactId> 
       <version>1.1</version> 
       <configuration> 
        <complianceLevel>1.6</complianceLevel> 
        <aspectLibraries> 
         <aspectLibrary> 
          <groupId>org.springframework</groupId> 
          <artifactId>spring-aspects</artifactId> 
         </aspectLibrary> 
        </aspectLibraries> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>compile</goal> 
          <goal>test-compile</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 
        <archive> 
         <manifest> 
          <mainClass>ch.beo.emc.front.factory.Front</mainClass> 
          <addClasspath>true</addClasspath> 
          <classpathPrefix>lib</classpathPrefix> 
         </manifest> 
        </archive> 
        <descriptors> 
         <descriptor>assembly.xml</descriptor> 
        </descriptors> 
       </configuration> 
       <executions> 
        <execution> 
         <id>make-assembly</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <includes> 
         <include>ch/beo/emc/front/AllTests.java</include> 
        </includes> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>1.4</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
          <createDependencyReducedPom>false</createDependencyReducedPom> 
          <transformers> 
           <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
            <mainClass>ch.beo.emc.front.factory.Front</mainClass> 
           </transformer> 
           <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
            <resource>META-INF/spring.handlers</resource> 
           </transformer> 
           <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
            <resource>META-INF/spring.schemas</resource> 
           </transformer> 
          </transformers> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>sign</id> 
         <phase>package</phase> 
         <goals> 
          <goal>sign</goal> 
         </goals> 
         <configuration> 
          <keystore>src/main/resources/security/jarsign/server.pfx</keystore> 
          <type>pkcs12</type> 
          <alias>beo-it.ch</alias> 
          <storepass>****</storepass> 
          <signedjar>${project.build.directory}/signed/${project.build.finalName}.jar</signedjar> 
          <verify>true</verify> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>com.l2fprod</groupId> 
      <artifactId>l2fprod-common-all</artifactId> 
      <version>6.9.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.swixml</groupId> 
      <artifactId>swixml</artifactId> 
      <version>1.5.144</version> 
     </dependency> 
     <dependency> 
      <groupId>net.java.balloontip</groupId> 
      <artifactId>balloontip</artifactId> 
      <version>1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.swinglabs</groupId> 
      <artifactId>swingx</artifactId> 
      <version>1.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>2.5.6.SEC01</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>2.5.6.SEC01</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>2.5.6.SEC01</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aspects</artifactId> 
      <version>2.5.6.SEC01</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>2.5.6.SEC01</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>2.5.6.SEC01</version> 
      <scope>test</scope> 
      <exclusions> 
       <exclusion> 
        <artifactId>junit</artifactId> 
        <groupId>junit</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>jfree</groupId> 
      <artifactId>jfreechart</artifactId> 
      <version>1.0.9</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.4</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.java.jnlp</groupId> 
      <artifactId>jnlp</artifactId> 
      <version>6.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.thoughtworks.xstream</groupId> 
      <artifactId>xstream</artifactId> 
      <version>1.3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
      <version>2.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jscience</groupId> 
      <artifactId>jsr-275</artifactId> 
      <version>0.8.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi</artifactId> 
      <version>3.7</version> 
     </dependency> 
     <dependency> 
      <groupId>net.sf.jasperreports</groupId> 
      <artifactId>jasperreports</artifactId> 
      <version>3.7.4</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-beanutils</groupId> 
        <artifactId>commons-beanutils</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>commons-collections</groupId> 
        <artifactId>commons-collections</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>jfree</groupId> 
        <artifactId>jcommon</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>jfree</groupId> 
        <artifactId>jfreechart</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>xml-apis</groupId> 
        <artifactId>xml-apis</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>bouncycastle</groupId> 
        <artifactId>bcmail-jdk14</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>bouncycastle</groupId> 
        <artifactId>bcprov-jdk14</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>bouncycastle</groupId> 
        <artifactId>bctsp-jdk14</artifactId> 
       </exclusion> 
       <exclusion> 
        <artifactId>jdtcore</artifactId> 
        <groupId>eclipse</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.eclipse.jdt.core.compiler</groupId> 
      <artifactId>ecj</artifactId> 
      <version>3.5.1</version> 
     </dependency> 
     <dependency> 
      <groupId>ar.com.fdvs</groupId> 
      <artifactId>DynamicJasper</artifactId> 
      <version>3.1.2</version> 
      <exclusions> 
       <exclusion> 
        <groupId>jasperreports</groupId> 
        <artifactId>jasperreports</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>javax.xml.bind</groupId> 
      <artifactId>jaxb-api</artifactId> 
      <version>2.2.5</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-impl</artifactId> 
      <version>2.2.5</version> 
     </dependency> 
    </dependencies> 
</project> 
+0

Jaki jest twój docelowy artefakt? WAR lub JAR lub EAR? – artbristol

+0

To właściwie JAR. Używam wtyczki maven-jar-plug-in i maven-shade-plugin, aby łączyć to wszystko razem. –

+0

Czy możesz opublikować konfigurację wtyczki z POM, w której używasz CXF? – nwinkler

Odpowiedz

12

po prostu wpadł na ten problem z JAXB także; dobroć kocham Mavena (nie). Oto, jak rozwiązałem problem.

Dodaj centralny repo

 
<repository> 
    <id>central</id> 
    <url>http://repo.maven.apache.org/maven2/</url> 
</repository> 

Modyfikacja wersji interfejsu API i IMPL

 
<dependency> 
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId> 
    <version>2.2.7-SNAPSHOT</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-impl</artifactId> 
    <version>2.2.5-b10</version> 
</dependency> 
+0

Niestety, to nie pomaga w mojej kompilacji. W rzeczywistości wersja 2.2.7-SNAPSHOT nie jest dostępna, mimo że zawierałem repozytorium. –

+1

Jest to jedna z rzeczy, których nie lubię w zarządzaniu depami w maven. To, co robię, gdy to się dzieje, to spojrzenie bezpośrednio na repozytorium w przeglądarce, aby znaleźć aktualnie dostępną wersję, jeśli jest to dozwolone, lub użyj http://search.maven.org/#search%7C1%7Cjaxb-api –

+0

Z tego co wiem patrz w wyszukiwaniu, 2.2.6 jest dostępny –

1

Dodaj

<dependency> 
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId> 
    <version>2.2.12</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-impl</artifactId> 
    <version>2.2.11</version> 
</dependency> 

i

<repositories> 
    <repository> 
     <id>central</id> 
     <url>http://repo.maven.apache.org/maven2/</url> 
    </repository> 
</repositories> 
Powiązane problemy