在gradle应用程序中修改为wsdl和xsd生成的java类的包名
我正在使用在gradle应用程序中修改为wsdl和xsd生成的java类的包名,gradle,jaxb,wsdl,cxf,wsdl2java,Gradle,Jaxb,Wsdl,Cxf,Wsdl2java,我正在使用Gradle kotlin dsl开发一个应用程序,即构建。Gradle在kotlin中。我有一个导入多个XSD的WSDL文件。编译时,Java类在默认位置生成(XSD中提到)。我的要求是每个XSD的Java类都应该在自定义位置生成 我指的是另一个maven项目。以下插件用于实现我的要求 <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-p
Gradle kotlin dsl
开发一个应用程序,即构建。Gradle在kotlin中。我有一个导入多个XSD的WSDL文件。编译时,Java类在默认位置生成(XSD中提到)。我的要求是每个XSD的Java类都应该在自定义位置生成
我指的是另一个maven项目。以下插件用于实现我的要求
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.1.5</version>
<executions>
<execution>
<id>generate-sources-sample</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/wsdl_file_name.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-p</extraarg>
<extraarg>urn:namespace:of:xsd:one=com.first.xsd.from.wsdl</extraarg>
<extraarg>-p</extraarg>
<extraarg>urn:namespace:of:xsd:one=com.second.xsd.from.wsdl</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
org.apache.cxf
cxf-codegen插件
3.1.5
生成源样本
生成源
${project.build.directory}/生成的源
${basedir}/src/main/resources/wsdl\u file\u name.wsdl
-客户
-p
urn:namespace:of:xsd:one=com.first.xsd.from.wsdl
-p
urn:namespace:of:xsd:one=com.second.xsd.from.wsdl
wsdl2java
我已尝试使用wsdl2Java任务分配自定义位置。我无法使用该任务,因为它需要CXF。这可能会导致我的应用程序中出现jar冲突
extra["cxfVersion"] = "3.1.5"
project.wsdl2javaExt {
cxfVersion = "${property("cxfVersion")}"
}
tasks.getByName<no.nils.wsdl2java.Wsdl2JavaTask>("wsdl2java") {
wsdlDir = file("$projectDir/src/main/resources/xsd/trip") // wslds location
generatedWsdlDir = file("$projectDir/src/main/generated-sources/xjc/newpackage") // store generates java classes to
wsdlsToGenerate = arrayListOf(
arrayListOf("$wsdlDir/wsdl_file_name.wsdl"),
arrayListOf("-xjc", "-autoNameResolution",
"$wsdlDir/wsdl_file_name.wsdl")
)
}
extra[“cxfVersion”]=“3.1.5”
project.wsdl2javaExt{
cxfVersion=“${property(“cxfVersion”)}”
}
tasks.getByName(“wsdl2java”){
wsdlDir=file(“$projectDir/src/main/resources/xsd/trip”)//wslds位置
generatedWsdlDir=file(“$projectDir/src/main/generated sources/xjc/newpackage”)//存储生成java类以
wsdlsToGenerate=arrayListOf(
arrayListOf($wsdlDir/wsdl\u file\u name.wsdl”),
arrayListOf(“-xjc”,“-autonamesolution”,
“$wsdlDir/wsdl_file_name.wsdl”)
)
}
请指导我在Gradle中获得相同的行为。我通过在我的应用程序的binding.xjb文件中添加自定义位置解决了这个问题。下面的改变对我很有效
<jaxb:bindings xmlns:tns="urn:namespace:of:xsd:one" scd="x-schema::tns">
<jaxb:schemaBindings>
<jaxb:package name="com.first.xsd.from.wsdl"/>
</jaxb:schemaBindings>
</jaxb:bindings>
<jaxb:bindings xmlns:tns="urn:namespace:of:xsd:two" scd="x-schema::tns">
<jaxb:schemaBindings>
<jaxb:package name="com.second.xsd.from.wsdl"/>
</jaxb:schemaBindings>
</jaxb:bindings>