在Kotlin(和Gradle)中使用Hibernate Validator注释处理器

时间:2019-01-11 21:53:25

标签: java hibernate gradle kotlin hibernate-validator

因此,我试图在 Kotlin 项目中使用 Hibernate Validator注释处理器,以检查我的JSR 380注释,但运气不佳。

不幸的是,文档中没有提到如何使用Gradle进行设置,显然,对于Kotlin,我们必须使用“ Kapt”来启用Java注释处理器。

休眠验证器注释处理器文档:http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-annotation-processor

Kapt文档:https://kotlinlang.org/docs/reference/kapt.html

我目前在与处理器有关的build.gradle文件中具有以下配置:

plugins {
    id "org.jetbrains.kotlin.kapt" version "1.3.11"
    ...
}

apply plugin: 'org.jetbrains.kotlin.kapt'
...

dependencies {
    implementation 'org.hibernate:hibernate-validator:6.0.14.Final'
    implementation 'org.glassfish:javax.el:3.0.1-b09'
    kapt 'org.hibernate:hibernate-validator-annotation-processor:6.0.14.Final'
    ...
}

kapt {
    arguments {
        arg('methodConstraintsSupported', 'false')
        arg('verbose', 'true')
    }
}

但是,无论何时构建,在故意将不正确的注释(例如,将@Min()注释应用于String时,都看不到与验证程序注释处理器有关的任何输出,也不会出现任何构建错误。字段。

如果有人可以建议如何使处理器正常工作,我将万分感谢! :)

1 个答案:

答案 0 :(得分:0)

我在build.gradle.kts中这样工作(我正在使用Kotlin Script而不是Groovy):

plugins {
    ...
    id("org.jetbrains.kotlin.kapt") version "1.3.72"
    ...
}

dependencies {
    ...
    kapt(
            group = "org.hibernate.validator",
            name = "hibernate-validator-annotation-processor",
            version = "6.0.2.Final"
    )
    ...
}

这在构建时正确地给了我错误,但仅当我将验证批注应用于getter时才出现。当我错误地将其仅应用于构造函数自变量时,验证不起作用,并且注释处理器未显示任何错误。例如:

class Thing(
    @get:AssertTrue
    var name: String
)