Maven cxf-codegen-plugin and import in wsdl
我正在尝试使用Maven的apache cxf-codegen-plugin从wsdl文件生成webservice类。
我的wsdl文件使用以下方式导入xsd
1 | <xs:import namespace="http://my.ns.com/privateperson" schemaLocation="../xsd/PrivatePerson.xsd"/> |
在pom.xml中,我有:
1 2 3 4 5 6 7 | <wsdlOption> <extraargs> <extraarg>-catalog ${basedir}/src/main/resources/xsd/PrivatePerson.xsd</extraarg> <extraarg>-server</extraarg> </extraargs> ... </wsdlOptions> |
但是,当我运行cxf-codegen-plugin时,出现以下错误:
1 | wsdl2java failed: org.apache.cxf.tools.common.toolspec.parser.BadUsageException: Unexpected option: -catalog valid/path/to/xsd/file/privateperson.xsd |
我的配置有问题吗? 当我不包括外部xsd文件时,一切正常。
我使用的目录如下:http://cxf.apache.org/docs/wsdl-to-java.html
我也用-e运行过maven:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | [ERROR] Failed to execute goal org.apache.cxf:cxf-codegen-plugin:3.0.0-milestone1:wsdl2java (generate-sources) on project Services: unresolved reference -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.cxf:cxf-codegen-plugin:3.0.0-milestone1:wsdl2java (generate-sources) on project Services: unresolved reference at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) at org.apache.maven.cli.MavenCli.main(MavenCli.java:158) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) at org.codehaus.classworlds.Launcher.main(Launcher.java:46) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Caused by: org.apache.maven.plugin.MojoExecutionException: unresolved reference at org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.generate(WSDL2JavaMojo.java:447) at org.apache.cxf.maven_plugin.AbstractCodegenMoho.execute(AbstractCodegenMoho.java:311) at org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:524) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 25 more Caused by: java.lang.InternalError: unresolved reference at com.sun.xml.xsom.impl.parser.DelayedRef._get(DelayedRef.java:103) at com.sun.xml.xsom.impl.parser.DelayedRef$Type.getType(DelayedRef.java:148) at com.sun.xml.xsom.impl.ElementDecl.getType(ElementDecl.java:110) at com.sun.xml.xsom.impl.ElementDecl.updateSubstitutabilityMap(ElementDecl.java:174) at com.sun.xml.xsom.impl.parser.ParserContext.getResult(ParserContext.java:141) at com.sun.xml.xsom.parser.XSOMParser.getResult(XSOMParser.java:211) at com.sun.tools.xjc.ModelLoader.createXSOM(ModelLoader.java:538) at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:269) at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:95) at org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:460) at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:714) at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:270) at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:164) at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:412) at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103) at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113) at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86) at org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.generate(WSDL2JavaMojo.java:427) ... 29 more |
每个额外的参数必须独立存在。 您尝试将两者合二为一,但由于插件需要小心地为您正确引用事物(或将每个参数作为参数数组的单独元素传递,具体取决于它是否在后台执行),因此无法正常工作 或不)。
你要这个:
1 2 3 4 5 6 7 8 | <wsdlOption> <extraargs> <extraarg>-catalog</extraarg> <extraarg>${basedir}/src/main/resources/xsd/PrivatePerson.xsd</extraarg> <extraarg>-server</extraarg> </extraargs> ... </wsdlOptions> |
(请注意,正确设置目录可能需要进行试验;在XML目录查找中记录失败的日志实际上是不存在的。)
好的,我已经解决了我的问题-我在wsdl中放置了
1 | <xs:import ... /> |
在错误的地方。 以前
1 | <wsdl:types> |
元件。
尝试以下标签,并检查其是否有效
1 2 3 4 5 | <wsdlOptions> <wsdlOption> <wsdl>${basedir}/<file-path></wsdl> </wsdlOption> </wsdlOptions> |
还要检查您正在使用哪个版本的cxf插件。 尝试使用最新的。
让我知道它是否仍然出现错误