2013-02-15 56 views
1

我想用maven cxf-codegen-plugin从WSDL创建一个Java类,但是当我尝试这样做时,它只是显示错误而没有生成类。从WSDL创建Java类

我不明白为什么我有这个错误,我的pom文件对我来说看起来没问题。

pom.xml看起来像

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>3.2.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-frontend-jaxws</artifactId> 
     <version>2.7.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-transports-http-hc</artifactId> 
     <version>2.7.3</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-bundle</artifactId> 
     <version>2.5.1</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArguments> 
        <endorseddirs>${endorsed.dir}</endorseddirs> 
       </compilerArguments> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${endorsed.dir}</outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax</groupId> 
           <artifactId>javaee-endorsed-api</artifactId> 
           <version>6.0</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <version>2.7.3</version> 

      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <configuration> 
         <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot> 
         <wsdlOptions> 
          <wsdlOption> 
           <wsdl>${basedir}/src/main/resources/CurrentTimeService.wsdl</wsdl> 
          </wsdlOption> 
         </wsdlOptions> 
        </configuration> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb2-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <configuration> 
         <schemaIncludes> 
          <include>jaxb/try/*.xsd</include> 
         </schemaIncludes> 
         <episodeFile>${project.build.directory}/generated-sources/xjc/META-INF/jaxb-try.episode</episodeFile> 
        </configuration> 
        <id>jaxb-generate-try</id> 
       </execution> 
       <execution> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <configuration> 
         <schemaIncludes> 
          <include>jaxb/try/*.xsd</include> 
         </schemaIncludes> 
         <episodeFile>${project.build.directory}/generated-sources/xjc/META-INF/jaxb-try.episode</episodeFile> 
         <generatePackage>q1.q2</generatePackage> 
        </configuration> 
        <id>jaxb-generate-try_1</id> 
       </execution> 
       <execution> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <configuration> 
         <schemaIncludes> 
          <include>jaxb/try2/*.xsd</include> 
         </schemaIncludes> 
         <episodeFile>${project.build.directory}/generated-sources/xjc/META-INF/jaxb-try2.episode</episodeFile> 
        </configuration> 
        <id>jaxb-generate-try2</id> 
       </execution> 
      </executions> 
      <configuration> 
       <catalog>src/main/resources/jaxb/catalog.xml</catalog> 
       <catalogResolver>org.jvnet.jaxb2.maven2.resolver.tools.ClasspathCatalogResolver</catalogResolver> 
       <forceRegenerate>true</forceRegenerate> 
       <generateDirectory>${project.build.directory}/generated-sources/xjc</generateDirectory> 
       <verbose>true</verbose> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

当我用Maven构建这个项目,我看到下面的错误

Failed to execute goal org.apache.cxf:cxf-codegen-plugin:2.7.3:wsdl2java (generate-sources) on project WebServicesTest: org.xml.sax.SAXParseException; systemId: jar:file:/C:/Users/user/.m2/repository/com/sun/xml/bind/jaxb-xjc/2.2.6/jaxb-xjc-2.2.6.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 86; columnNumber: 48; src-resolve: Cannot resolve the name 'xjc:globalJavaType' to a(n) 'group' component. 
+0

'xjc:globalJavaType'似乎是JAXB问题,如果有帮助.... – Puce 2013-02-15 14:27:37

+0

POM不好看_to me _...你有两个不同的CXF版本,2.7.3和2.5.1。另外,提供WSDL和XSD文件。 – 2013-02-15 14:30:14

+0

与两个2.7.3版本相同的问题 – Olexii 2013-02-15 14:48:42

回答

4

看一看这个帖子:

Cannot resolve the name 'xjc:globalJavaType' in jaxb-xjc-2.2.5-2.jar

你可能在p中有非拉丁字符运行到您当地的Maven回购。尝试改变你的settings.xml来设置一些只包含拉丁字符的其他目录,看看是否有帮助。

+0

谢谢,我会尽量改变我的回购地点 – Olexii 2013-02-15 14:49:12

+0

伟大的,改变为maven本地存储库中的拉丁字符有帮助! 谢谢! – Olexii 2013-02-15 15:03:23

+0

没问题,很高兴我可以帮忙! :) – 2013-02-15 15:58:02