2012-03-05 109 views
11

在我的1.6.0_16 JDK上,我使用Apache CXF 2.5.2從WSDL生成了我的存根類,它使用最新的jaxb-api 2.2。我知道有可能使用jaxb-api 2.1,但爲了避免兼容性問題,我寧願讓它使用當前版本。由於我的JDK功能JAXB 2.1,構建失敗,出現以下消息:使用Maven包含JAXB

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

因此,我試圖讓行家包括使用以下相關性最近的JAXB API和實現。

<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> 

儘管這兩個罐子已經被添加到Maven依賴在Eclipse中,錯誤消息無論是在Eclipse和Maven構建仍然存在。

如何在我的Maven構建中包含這些jar並讓它們在Eclipse和目標系統中使用?


PS:請找到完整的POM這裏:

<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

你的目標神器是什麼? WAR或JAR或EAR? – artbristol 2012-03-05 12:51:12

+0

這是一個JAR,實際上。我使用maven-jar-plugin和maven-shade-plugin將它們包裝在一起。 – 2012-03-05 13:00:02

+0

你可以從你的POM發佈你使用CXF的插件配置嗎? – nwinkler 2012-03-05 13:02:17

回答

12

我只是碰到了這個問題與JAXB也;天哪,我愛Maven(不)。以下是我解決問題的方法。

加入中央回購

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

修改API的版本並實現了一套

 
<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

不幸的是,這對我的構建沒有幫助。事實上,即使我包含存儲庫,2.2.7-SNAPSHOT也不可用。 – 2012-04-06 08:24:31

+1

這是我討厭在maven中管理代碼的問題之一。當發生這種情況時,我所做的是直接在瀏覽器中查看回放以查找當前可用的版本(如果允許)或使用http://search.maven.org/#search%7Cga%7C1%7Cjaxb-api – 2012-04-06 13:30:19

+0

從哪我在搜索中看到,2.2.6可用 – 2012-04-06 13:30:41

1

添加

<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> 

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