2014-02-25 18 views
0

我是maven的新手,這是我第一次使用maven-jaxb2-plugin從.xsd模式生成java類。使用maven-jaxb2-plugin的非法模式字符

這是我的pom.xml:

<properties> 
    <java.source.version>1.6</java.source.version> 
    <java.target.version>1.6</java.target.version> 
</properties> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>${java.source.version}</source> 
       <target>${java.target.version}</target> 
      </configuration> 

     </plugin> 


     <plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb2-plugin</artifactId> 
      <version>0.8.3</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
       </execution> 
      </executions> 

      <configuration> 
       <schemaDirectory>src/main/resources/schema</schemaDirectory> 
       <schemaIncludes> 
        <include>mySchema.xsd</include> 
       </schemaIncludes> 
       <generatePackage>it.mycompany.jaxb2</generatePackage> 
       <readOnly>true</readOnly> 
      </configuration> 
     </plugin> 
    </plugins> 
    </build>  
<dependencies> 
    <!-- A few dependiences --> 
</dependencies> 

麻煩的是,當我嘗試運行

MVN安裝

我得到以下錯誤

Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default of goal org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.8.3:generate failed: Illegal pattern character 'g' 
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:115) 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
... 20 more 
    Caused by: java.lang.IllegalArgumentException: Illegal pattern character 'g' 
at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:768) 
at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:575) 
at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:500) 
at com.sun.tools.xjc.Options.getPrologComment(Options.java:937) 
at com.sun.tools.xjc.addon.episode.PluginImpl.run(PluginImpl.java:177) 
at com.sun.tools.xjc.model.Model.generateCode(Model.java:294) 
at org.jvnet.mjiip.v_2_2.XJC22Mojo.generateCode(XJC22Mojo.java:70) 
at org.jvnet.mjiip.v_2_2.XJC22Mojo.doExecute(XJC22Mojo.java:45) 
at org.jvnet.mjiip.v_2_2.XJC22Mojo.doExecute(XJC22Mojo.java:29) 
at org.jvnet.jaxb2.maven2.RawXJC2Mojo.doExecute(RawXJC2Mojo.java:318) 
at org.jvnet.jaxb2.maven2.RawXJC2Mojo.execute(RawXJC2Mojo.java:160) 
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) 
... 21 more 

Maven是這樣構成的:

MVN --version Maven的家:C:\ Program Files文件 (x86)的\ Apache的行家-3.1.1 \ BIN .. Java版本:1.6.0_45,供應商: Sun Microsystems Inc. Java home:C:\ Program Files (x86)\ Java \ jdk1.6.0_45 \ jre默認語言環境:it_IT,平臺編碼: Cp1252操作系統名稱:「windows 8」,版本:「6.2」, arch:「x86」,family: 「windows」

我在哪裏做錯了?

+1

正如stacktrace所說的,你在某處定義的日期格式有問題 - 而不是在你的pom.xml中。在XSD中,也許? – fge

回答

0

的問題是默認的Maven的JAXB2-插件使用JAXB的XJC的2.2.6版本,該版本有一些問題

默認區域:it_IT

但作品只有美國的區域設置。然後我添加了以下依賴我的pom

<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-xjc</artifactId> 
    <version>2.2.5</version> 
    </dependency> 

現在一切正常。