如何使用gradle中的xmlbeans从xsd生成java类

时间:2016-05-18 15:57:25

标签: java gradle xsd axis2 xmlbeans

我是新手。在我的项目中,我有xsd文件,我想从该xsd生成java类(仅使用xmlbeans)。如何在gradle中做到这一点。

我正在使用axis2 1.6.1,gradle,xmlbean 2.3.0`(JAXB不是我当前项目中的一个选项)。

4 个答案:

答案 0 :(得分:3)

我不得不修改Stanislav的答案以使插件正常工作。即以下列方式设置sourceSet:

sourceSets {
    xmlbeans {
        java {
            srcDirs = ['dir/schema']
        }
    }
}

如果有人遇到同样的问题。

答案 1 :(得分:1)

据我所知,您可以使用{{3}}。现在不能说,是否可以将xmlbean的版本更改为旧版本。

您只需将插件应用于构建脚本:

apply from: 'https://raw.github.com/rartavia/gradle-plugins/master/xmlbeansPlugin/xmlbeans.gradle'

然后声明xmlbeans配置及其依赖

configurations {
    xmlbeans
}

dependencies {
    xmlbeans 'org.apache.xmlbeans:xmlbeans:2.5.0'
}

之后,您必须指定xsd文件位置

sourceSets {
    schemas {
            srcDir = 'src/main/schemas'
    }
}

现在你可以调用compileXmlSchemas任务来生成类

答案 2 :(得分:1)

java -classpath xbean.jar org.apache.xmlbeans.impl.tool.SchemaCompiler 
     -src <OUTPUT_SOURCE_FOLDER> 
     -out <OUTPUT>.jar <SOURCE>.xsd 
     -compiler "javac.exe" 
     -javasource "1.5"

答案 3 :(得分:0)

任何用最新的 gradle build (6.x) 寻找这个问题的答案的人,这里是我如何在 eclipse 中配置项目(版本:2020-06 (4.16.0))并生成 Java (8 ) 使用 gradle 任务自动从 XSD 文件中提取类。

build.gradle 文件中的代码片段

buildscript {
   repositories {
    maven {
        url "https://plugins.gradle.org/m2/"
     }
   }
   dependencies {
     classpath 'gradle.plugin.com.liferay:gradle-plugins-xsd-builder:1.0.10'
  } 
}
dependencies {
  compile "org.apache.xmlbeans:xmlbeans:4.0.0"
  ... //other dependencies
}
.... // other code
apply plugin: "com.liferay.xsd.builder"

添加以上代码后,刷新eclipse然后更新eclipse中的gradle任务视图,应该可以看到buildXSDbuild下的任务:buildXSD > 组。将所有 XSD 文件添加到 xsd 文件夹中(将此文件夹保留在项目文件夹的根目录下)并双击 buildXSD 任务以从 XSD 生成所有 Java 类型,非常干净。如果您将来要添加任何 XSD,只需将其放入 xsd 文件夹中,然后再次运行相同的任务。此任务将生成一个 jar 文件,其中包含项目 lib 文件夹中的所有 Java 类型。

buildXSD task in gradle project

对于好奇的人 - 目前,我们的工作如下:

  1. 在 build 文件夹下运行 jar 任务,它实际上会生成项目的 jar 文件(该项目使用从 XSD 生成的 Java 类用于某些 Web 服务调用)
  2. 然后将两个 jar 文件:从第一步生成的 jar 文件 + 基于 XSD 生成的 jar 文件复制到本地机器的部署文件夹
  3. 运行另一个 gradle 任务,它调用远程机器停止服务器,将 jar 部署到所需位置,然后启动服务器。这个 gradle 任务还使用了另一个插件:https://gradle-ssh-plugin.github.io/,它也工作得很好。

上述所有步骤都是通过单个 gradle 任务(clean + jar + customCopyTask + deployToServer)自动完成的,它可以完美地自动执行此操作。 注意:jar 任务也会生成基于 XSD 的 jar 文件。因此,您可能想要编写自定义 jar 任务。