2011-12-13 11 views
7

Ben bir hata alıyorumJava 7 ile çalışan maven-jaxb-schemagen-plugin almak mümkün mü?

<groupId>com.sun.tools.jxc.maven2</groupId> 
<artifactId>maven-jaxb-schemagen-plugin</artifactId> 
<version>1.2</version> 

java 7 ile maven-jaxb-schemagen-plugin kullanmaya çalıştığınızda:

[ERROR] Failed to execute goal com.sun.tools.jxc.maven2:maven-jaxb-schemagen-plugin:1.2:generate (default) on project TopologyProvisionerDom: Execution default of goal com.sun.tools.jxc.maven2:maven-jaxb-schemagen-plugin:1.2:generate failed: A required class was missing while executing com.sun.tools.jxc.maven2:maven-jaxb-schemagen-plugin:1.2:generate: com/sun/mirror/apt/AnnotationProcessorFactory 

Bu Java 7 kullanımdan kaldırılmış kaldırılıyor AnnotationProcessorFactory/gibi görünüyor? Bu eklentiyi kullanarak çalışmak için jaxb schemagen almak mümkün mü? JDK 7'yi kullanırken JAXB kaynak kodundan şema nesli elde etmek için alternatif bir yaklaşım var mı?

cevap

9

Bunun yerine org.codehaus.mojo:jaxb2-maven-plugin kullanmayı denediniz mi?

+2

Bu eklenti işe yarıyor gibi görünüyor. Bir dezavantajı, bu eklentiyi kullanarak çıktı şema dosyalarını adlandırmak mümkün görünmüyor, bu yüzden şema dosyasını yeniden adlandırmak için maven-antrun-plugin kullanmaya başvurmak zorunda kaldım. Ayrıca bir uyarı alıyorum: "uyarı: apt aracı ve ilişkili API'sinin bir sonraki büyük JDK sürümünde kaldırılması planlanıyor." - umarım bu karışıklık, java 8 – lexicalscope

+1

'dan önce sıralanır. ve keiki

7

Bu işleyiş şekli (bu profili Apple Şifre pom.xml):

<profile> 
    <id>jdk7-fix</id> 
    <activation> 
     <file><exists>${java.home}/../lib/tools.jar</exists></file> 
    </activation> 
    <build> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>com.sun.tools.jxc.maven2</groupId> 
        <artifactId>maven-jaxb-schemagen-plugin</artifactId> 
        <dependencies> 
         <dependency> 
          <groupId>com.sun</groupId> 
          <artifactId>tools</artifactId> 
          <version>1.7</version> 
          <scope>system</scope> 
          <systemPath>${java.home}/../lib/tools.jar</systemPath> 
         </dependency> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
</profile> 
+0

kullanarak çıktı şema dosyalarını kullanabilirsiniz. Bu benim için bir geçici çözüm gibi görünüyor, çözümünüz için bir açıklamanız var mı? Teşekkürler –

0

emin değil kimse hey ...

ben transformSchemas eskiden ne, artık bu konuya dinliyor ama seçenek ör.

<transformSchemas> 
    <transformSchema> 
     <uri>YOUR NS IN YOUR GENERATED SCHEMA FILE</uri> 
     <toFile>DESIRED NAME OF YOUR XSD FILE</toFile> 
    </transformSchema> 
</transformSchemas> 

şerefe

-m.