从 XSD 生成没有命名空间的类

问题描述 投票:0回答:1

我目前正在将一个大型构建从 Maven 转换为 Gradle。我们有一个代码生成步骤,它使用 JAXB 从一组 XSD 生成类。在 Maven 构建中,生成的类没有命名空间,这是正确的,因为相同的类将在两个不同的命名空间中使用。在 Gradle 构建中,生成的类在其 XMLRootElement 注释中添加了一个命名空间,这会阻止它们正常工作。如何更改 Gradle 构建步骤,以便生成的类没有命名空间?

Maven 设置如下所示:

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.14.0</version>
    <configuration>
        <schemaDirectory>${project.build.directory}/classes/xmlbuild</schemaDirectory>
        <bindingDirectory>${project.build.directory}/classes/xmlbuild</bindingDirectory>
        <strict>false</strict>
        <schemaIncludes>
            <include>**/*.xsd</include>
        </schemaIncludes>
        <bindingIncludes>
            <include>**/*.xjb</include>
        </bindingIncludes>
        <args>
            <arg>-Xannotate</arg>
            <arg>-Xvalue-constructor</arg>
            <arg>-XtoString</arg>
            <arg>-Xequals</arg>
            <arg>-XhashCode</arg>
            <arg>-Xcopyable</arg>
            <arg>-Xmergeable</arg>
            <arg>-Xdefault-value</arg>
            <arg>-Xfluent-api</arg>
        </args>
        <extension>true</extension>
    </configuration>

在 Gradle 中,我使用 com.intershop.gradle.jaxb 插件。对我来说,配置看起来是一样的:

jaxb {
  javaGen {
    apiModelClasses {
        schemas = fileTree("$buildDir/path/to/xsds") {
            include '*.xsd'
        }
        bindings = fileTree("$buildDir/path/to/xsds") {
            include '*.xjb'
        }
        extension = true
        antTaskClassName = 'org.jvnet.jaxb2_commons.xjc.XJC2Task'
        args = [
                '-npa',                     
                '-Xannotate',
                '-Xvalue-constructor',
                '-XtoString',
                '-Xequals',
                '-XhashCode',
                '-Xcopyable',
                '-Xmergeable',
                '-Xdefault-value',
                '-Xfluent-api',
                '-verbose'
        ]
    }
  }
}
java maven gradle jaxb
1个回答
0
投票

您是否尝试添加此选项:

'-nv'

args = [
                '-npa',                     
                '-Xannotate',
                '-Xvalue-constructor',
                '-XtoString',
                '-Xequals',
                '-XhashCode',
                '-Xcopyable',
                '-Xmergeable',
                '-Xdefault-value',
                '-Xfluent-api',
                '-verbose'
        ]

成为

args = [
            '-npa',
            '-nv',             '-Xannotate',
            '-Xvalue-constructor',
            '-XtoString',
            '-Xequals',
            '-XhashCode',
            '-Xcopyable',
            '-Xmergeable',
            '-Xdefault-value',
            '-Xfluent-api',
            '-verbose'
        ]

© www.soinside.com 2019 - 2024. All rights reserved.