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

如何在gradle中使用xmlbeans从xsd生成java类,java,gradle,xsd,axis2,xmlbeans,Java,Gradle,Xsd,Axis2,Xmlbeans,我是格拉德尔的新手。在我的项目中,我有xsd文件,我希望仅使用xmlbeans从该xsd生成java类。在格拉德尔如何做到这一点 我正在使用axis2 1.6.1、gradle、xmlbean 2.3.0`JAXB不是我当前项目中的选项。据我所知,您可以使用。现在还不能确定是否可以将xmlbean的版本更改为旧版本 您只需将插件应用于构建脚本: apply from: 'https://raw.github.com/rartavia/gradle-plugins/master/xmlbeansP

我是格拉德尔的新手。在我的项目中,我有xsd文件,我希望仅使用xmlbeans从该xsd生成java类。在格拉德尔如何做到这一点


我正在使用axis2 1.6.1、gradle、xmlbean 2.3.0`JAXB不是我当前项目中的选项。

据我所知,您可以使用。现在还不能确定是否可以将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任务来生成类

我不得不修改一下Stanislav的答案才能让插件正常工作。即按以下方式设置源集:

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"
sourceSets {
    xmlbeans {
        java {
            srcDirs = ['dir/schema']
        }
    }
}

如果有人有同样的问题。

如果有人想用最新的gradle build 6.x来回答这个问题,下面是我如何在eclipse版本2020-06 4.16.0中配置项目,并使用gradle任务自动从XSD文件生成Java 8类

build.gradle文件中的代码段

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

对于好奇的人-目前,我们所做的是:

在build文件夹下运行jar任务,该文件夹实际生成项目的jar文件。该项目使用从XSD生成的Java类进行某些web服务调用 然后将这两个jar文件:从第一步生成的jar文件+XSD生成的jar文件复制到本地计算机中的deploy文件夹 运行另一个gradle任务,调用远程机器停止服务器,将jar部署到所需位置,然后启动服务器。这个gradle任务还使用了另一个插件:它也工作得很好。 以上所有步骤都是通过单个gradle task clean+jar+customCopyTask+deployToServer实现自动化的,它可以完美地实现自动化。
注意:jar任务还生成基于XSD的jar文件。因此,您可能需要编写一个自定义jar任务。

谢谢。我已把你的答复记为答复。我最终得到了一个类似的解决方案:ant.taskdefname:'xmlbean',classname:'org.apache.xmlbeans.impl.tool.xmlbean',classpath:configurations.xmlbeans.asPath,然后是:task compileXmlSchemas{doLast{ant.xmlbeanschema:'xsd/Development/ProductInfoRequest.xsd',srcgendir:src/main/java,classgendir:'build/generated',classpath:Configurations.xmlbeans.asPath}谢谢Stek。这有助于我得到源集的错误。没有这样的属性:srcDirs for class:org.gradle.api.internal.NamedDomainObjectContainerConfigureDelegate。知道吗?
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"