[英]Generate Serializable classes from a rest WADL with maven
我需要使用maven插件從其余的WADL生成實現Serializable
類。 我可以通過添加jaxb-bindings.xml
來處理WSDL項目,但這不適用於WADL項目。
編輯:現在生成文件時出現此錯誤
無法在項目my_project上執行目標org.apache.cxf:cxf-wadl2java-plugin:3.2.0:wadl2java(generate-sources):java.lang.RuntimeException:從WADL編譯架構時出錯:“ http:// localhost:8080 /rest_web/rest/application.wadl “不是此編譯的一部分。 這是“ http:// localhost:8080 / rest_web / rest / application.wadl / xsd2.xsd ”的錯誤嗎? -> [幫助1]
生成WADL的Web應用程序pom.xml:
<plugin>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>maven-wadl-plugin</artifactId>
<version>1.19.4</version>
<executions>
<execution>
<id>generate</id>
<goals>
<goal>generate</goal>
</goals>
<phase>prepare-package</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.1</version>
</dependency>
</dependencies>
<configuration>
<wadlFile>${project.build.outputDirectory}/application.wadl</wadlFile>
<formatWadlFile>true</formatWadlFile>
<baseUri>http://${server}:8080/${project.name}/rest</baseUri>
<packagesResourceConfig>
<param>webservice.rest</param>
</packagesResourceConfig>
<wadlGenerators>
<wadlGeneratorDescription>
<className>com.sun.jersey.server.wadl.generators.WadlGeneratorApplicationDoc
</className>
<properties>
<property>
<name>applicationDocsFile</name>
<value>${basedir}/src/main/doc/application-doc.xml</value>
</property>
</properties>
</wadlGeneratorDescription>
<wadlGeneratorDescription>
<className>com.sun.jersey.server.wadl.generators.WadlGeneratorGrammarsSupport</className>
<properties>
<property>
<name>grammarsFile</name>
<value>${basedir}/src/main/doc/application-grammars.xml</value>
</property>
</properties>
</wadlGeneratorDescription>
</wadlGenerators>
</configuration>
</plugin>
客戶端pom.xml文件:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-wadl2java-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/target/generated-sources</sourceRoot>
<wadlOptions>
<wadlOption>
<wadl>http://localhost:8080/rest_web/rest/application.wadl</wadl>
<extraargs>
<extraarg>-verbose</extraarg>
<extraarg>-xjc-extension</extraarg>
</extraargs>
<bindingFiles>
<bindingFile>${basedir}/src/main/resources/META-INF/jaxb/jaxb-bindings.xml</bindingFile>
</bindingFiles>
<packagename>org.apache.cxf.systest.jaxrs.codegen.service</packagename>
<schemaPackagenames>
<schemaPackagename>http://superbooks=org.apache.cxf.systest.jaxrs.codegen.schema</schemaPackagename>
</schemaPackagenames>
</wadlOption>
</wadlOptions>
</configuration>
<goals>
<goal>wadl2java</goal>
</goals>
</execution>
</executions>
</plugin>
jaxb-bindings.xml
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
version="2.1">
<globalBindings>
<serializable uid="1" />
</globalBindings>
</bindings>
原因是在<grammars>
塊中有多個XSD模式(導入的xsd文件或明確定義的<xs:schema>
標記)。 在wadl的<grammars>
塊中需要一個根<xs:schema>
根標簽,以獲取XJB綁定以與wadl2java
一起wadl2java
。 我現在正在尋找無需進行wadl編輯的解決方法,但仍然沒有成功,如果有人分享解決方案,我將非常感謝。
此致Aliaksei
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.