#java #gradle #jaxb #xjc
Вопрос:
В проекте есть модуль gradle для создания классов JAX2B. В конфигурации XJC уже используются примечания:
bindingFiles = project.files("$projectDir/src/main/resources/binding.xjb",
"$projectDir/src/main/resources/annotations.xjb")
// Needed to execute custom annotations
options.add("-Xannotate")
}
Я подумал, что мог бы добавить варианты, чтобы получить equals()
и hashCode()
xjc {
bindingFiles = project.files("$projectDir/src/main/resources/binding.xjb",
"$projectDir/src/main/resources/annotations.xjb")
options.addAll("-Xannotate", "-Xequals", "-XhashCode")
}
Методов нет в классе, и в журнале сборки нет ошибок или предупреждений.
Как мне создать эти методы?
PS: Вот зависимости файлов сборки
dependencies {
implementation(project(":xxx:xxx-api"))
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.2")
xjcPlugins("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.2")
xjcPlugins("org.jvnet.jaxb2_commons:jaxb2-basics-annotate:1.1.0")
}
обновленный
Спасибо @thokuest за обнаружение отсутствующей зависимости.
В проекте есть модуль gradle для создания классов JAX2B, но я получаю ошибки при сборке, добавляя опцию «-Xequals».:
build/generated/sources/xjc/java/org/pen/ProductOutputType.java:16: error: package org.jvnet.jaxb2_commons.locator.util does not exist
import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
^
build/generated/sources/xjc/java/org/pen/ProductOutputType.java:47: error: cannot find symbol
public class ProductOutputType implements Equals2
^
Я создал минимальный пример в качестве сути-build.gradle.kts
Ответ №1:
equals()
и hashCode()
поддерживаются плагином jaxb2-основы.
xjcPlugins 'org.jvnet.jaxb2_commons:jaxb2-basics:1.11.1'
Согласно вики org.jvnet.jaxb2_commons:jaxb2-basics-runtime:1.11.1
-странице проекта, вам также необходимо добавить зависимость от времени выполнения.
Обновить
Зависимость org.jvnet.jaxb2_commons:jaxb2-basics-runtime:1.11.1
должна находиться в области implementation
видимости, так как в противном случае возникает ошибка сборки, описанная в вопросе.
Комментарии:
1. Спасибо. Я скучал по этому. Я добавил это и продвинулся немного дальше. Я уточню вопрос.
2. @ahoffer обновлен ответ. Вам нужно добавить
org.jvnet.jaxb2_commons:jaxb2-basics-runtime:1.11.1
в областьimplementation
действия .