gpt4 book ai didi

Gradle 中的 Maven jaxb2 插件

转载 作者:行者123 更新时间:2023-12-02 13:00:26 27 4
gpt4 key购买 nike

我需要将maven项目迁移到gradle。 maven 项目像这样使用 maven-jaxb2-plugin (插件的版本在根 pom.xml 中设置):

<plugin>
<groupId>...</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<generatePackage>package for generated classes</generatePackage>
<schemaDirectory>directory containing XSD files</schemaDirectory>
<includeSchemas>
<includeSchema>XSD file name</includeSchema>
<includeSchema>XSD file name</includeSchema>
...
</includeSchemas>
<strict>true</strict>
<verbose>true</verbose>
<extension>true</extension>
</configuration>
<plugin>

所以,我想在 gradle 中实现相同的功能,这就是我所拥有的:

plugins {
id "com.github.jacobono.jaxb" version "1.3.5"
}
dependencies {
jaxb "org.glassfish.jaxb:jaxb-runtime:2.2.11"
jaxb "org.glassfish.jaxb:jaxb-xjc:2.2.11"
}
jaxb {
xsdDir = "directory containing XSD files"
xjc {
taskClassname = "com.sun.tools.xjc.XJC2Task"
generatedPackage = "package for generated classes"
}
}
compileJava.dependsOn xjc

该项目是多项目构建的一部分,依赖于其他项目等,但我认为这些不相关。

我走在正确的道路上吗?我这么问是因为当我执行 mvn clean installgradle clean build

时,行为似乎并不相同

问题:

  • 有没有办法指定我们想要在 gradle 中使用的 XSD 文件名(就像我们在 maven 中使用 includeSchema 一样)?

我的问题:

最佳答案

这就是我在完成研究后完成这项任务的方法。这正如预期的那样。将以下内容添加到您的构建文件中。

buildscript {

dependencies {
classpath 'com.github.jacobono:gradle-jaxb-plugin:1.3.5'
}
}

apply plugin: 'com.github.jacobono.jaxb'

dependencies {

jaxb 'com.sun.xml.bind:jaxb-xjc:2.2.7-b41'
jaxb 'com.sun.xml.bind:jaxb-impl:2.2.7-b41'
jaxb 'javax.xml.bind:jaxb-api:2.2.7'
jaxb "org.jvnet.jaxb2_commons:jaxb2-basics-ant:0.6.5"
jaxb "org.jvnet.jaxb2_commons:jaxb2-basics:0.6.4"
jaxb "org.jvnet.jaxb2_commons:jaxb2-basics-annotate:0.6.4"
jaxb "org.jvnet.jaxb2_commons:jaxb2-value-constructor:3.0"
}


jaxb {

System.setProperty('javax.xml.accessExternalSchema', 'all') //To solve external schema dependencies
xsdDir = "src/main/resources/schema/" //xsd directory
xjc {
taskClassname = "org.jvnet.jaxb2_commons.xjc.XJC2Task" // This is for setter plugin
args = ["-Xsetters","-Xsetters-mode=direct"]
}
}

您应该运行“gradle xjc”从xsd文件生成相关的java文件。

关于Gradle 中的 Maven jaxb2 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37117124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com