当前位置: 首页 > 知识库问答 >
问题:

将Hibernate验证器注释处理器与 Kotlin(和 Gradle)结合使用

蒲曦
2023-03-14

所以我试图让Hibernate Validator注释处理器在Kotlin项目中工作,来检查我的JSR 380注释,运气不太好。

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

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

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')
    }
}

然而,每当我构建时,我看不到任何与验证器注释处理器相关的输出,并且当我故意应用不正确的注释(例如,将< code>@Min()注释应用到< code>String字段时,我没有得到任何构建错误。

如果有人能就如何让处理器工作提出建议,我将永远感激不尽!:)

共有1个答案

习斌
2023-03-14

我得到了这个工作在我的build.gradle.kts像这样(我使用静态编程语言脚本,而不是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
)
 类似资料:
  • 我的处理器中有一个简单的注释,如下所示: 这适用于java文件,但一旦我将文件转换为kotlin,注释的导入就不再有效。为什么? 我需要改变什么才能让他的注释也在Kotlin中工作?从文档中,我可以看到kotlin与java注释100%兼容,所以我有点困惑这里有什么问题...如果处理器不工作,需要调整以与kotlin一起工作,我会理解,但我不知道为什么导入本身不工作... 我说的图书馆在这里:ht

  • 无法理解如何配置build.gradle以便在没有任何JPA/JDO/Mongo的情况下使用querydsl注释处理器。我想使用@QueryEntity注释生成Q类,这样我就可以使用DSL支持编写动态SQL查询,然后将查询转换为纯文本并提供给Spring R2DBC DatabaseClient Executor。 我正在使用Gradle5,Spring Data R2DBC,Spring Boo

  • null 我的git和Gradle技能是初学者水平。我将非常感谢对这项任务的任何帮助。谢谢你。

  • 我喜欢使用Lombok,但它需要在IDEs设置中启用注释处理器。因为开发人员使用不同的IDE,CI/CD有自己的编译流程,而且我真的不想解释初级开发人员为什么需要选中此复选框,我正在寻找一种方法来避免选中此复选框。理想的情况下,我想让一个年轻人来运行git clone,然后/格拉德卢跑。Gradle是否可以完全设置注释处理器(无需手动单击)? 如果它能在比IntelliJ IDEA更多的地方工作,

  • 我有一个使用javax注释的jax-rs项目(

  • 我有以下问题,有一个常规的spring模型(我们称之为“a”),带有一些与验证相关的注释。接下来是一个命令对象(定义一些字段的常规POJO类,其中一个是类型a的对象)。command对象实现了Validator接口,以使绑定和验证在控制器方法中工作。 问题是,如何在命令对象内部使用注释配置的验证(因为它实现了Validator接口,所以它有supports()和validate()方法)。 我试图