Обновите перевод XSD в Java с Java8/JAXB на Java17/Jakarta.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Обновите перевод XSD в Java с Java8/JAXB на Java17/Jakarta.

Сообщение Anonymous »

Я пытаюсь обновить существующую сборку Gradle Java 8 и JAXB, которая генерирует объекты Java из XSD в Java 17 и Jakarta. Как мне обновить следующую задачу Gradle, чтобы использовать Джакарту? Есть ли задание XJC Jakarta? Кажется, я не могу найти ссылку на него.
Вот мой build.gradle:

Код: Выделить всё

plugins {
id 'java'
}

defaultTasks 'clean', 'compileJava'

project.ext {
jaxbTargetDir = "xsd_src"
schemaSrc = "xsd_v1.0"
schemaName = "schema_20180419.xsd"
}

sourceSets {
main {
// use ant generated src and extra source
java {
srcDir "${jaxbTargetDir}"
srcDir 'extra_src'
}
// include the src in the jar
resources {
srcDir "${schemaSrc}"
}
}
}

tasks.withType(JavaCompile).configureEach {
options.fork = true  // Fork your compilation into a child process
options.forkOptions.setMemoryMaximumSize("4g") // Set maximum memory to 4g
}

configurations {
xsd2Java
}

dependencies {
// Java EE Dependencies
xsd2Java('jakarta.xml.bind:jakarta.xml.bind-api:4.0.0')
xsd2Java('jakarta.activation:jakarta.activation-api:2.0.0')
xsd2Java('jakarta.annotation:jakarta.annotation-api:2.1.0-B1')

implementation 'org.javassist:javassist:3.29.0-GA'

// Versioning comes from Maven Jaxb2 Plugin
implementation 'org.jvnet.jaxb:jaxb2-basics:2.0.5'
implementation 'org.jvnet.jaxb:jaxb2-basics-ant:2.0.5'
implementation 'org.jvnet.jaxb:jaxb-basics-annotate:2.0.5'
implementation 'org.jvnet.jaxb:jaxb2-basics-runtime:2.0.5'

implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.1'
implementation 'org.glassfish.jaxb:jaxb-xjc:4.0.0-M4'

compileOnly 'org.slf4j:slf4j-simple:1.7.28'
}

task xsd2Java() {
doLast {
ant.taskdef(name: 'xjc', classname: 'org.jvnet.jaxb2_commons.xjc.XJC2Task', classpath: configurations.compileClasspath.asPath)
ant.jaxbTargetDir = file("${jaxbTargetDir}")

ant.xjc(
extension: true,
destdir: '${jaxbTargetDir}',
binding: file("${schemaSrc}/bindingsv.xjb"),

) {
schema(dir: "${schemaSrc}") {
include(name: "${schemaName}")
}
arg(line: "-nv -extension -xmlschema -Xannotate -XtoString -Xequals -XhashCode -Xcopyable")
// check the timestamps on xsds and java files to see if we need to regenerate
depends(dir: "${schemaSrc}") {
include(name: "**/*.xsd")
}
produces(dir: "${jaxbTargetDir}") {
include(name: "**/*.java")
}
}
}
}

compileJava.dependsOn 'xsd2Java'
Я также обновил файлbindingsv.xjb, чтобы он ссылался на Джакарту: Однако при запуске сборки я получаю следующую ошибку:

Код: Выделить всё

Execution failed for task ':Services:messages:xsd2Java'.
> java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
Будем признательны за любые советы и предложения!

Подробнее здесь: https://stackoverflow.com/questions/789 ... 17-jakarta
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»