Hibernate Validator

贡献

要求

  • JDK 8 (使用 >=1.8.0_20)

  • Maven (至少版本 3.3.1)

获取源代码

Hibernate Validator 代码可在 GitHub 上获得。要获取源代码的只读版本,您可以使用

git clone git://github.com/hibernate/hibernate-validator.git validator

对于具有写入权限的人员

git clone git@github.com:hibernate/hibernate-validator.git validator

要回馈 Hibernate Validator,您应该在您的 GitHub 帐户中创建 分支 项目,并提交您更改的 拉取请求。有关 Git 的更多信息,请查看 此博客文章

Bean Validation API 的源代码(Hibernate Validator 是其参考实现)可以通过以下方式获取

git clone https://github.com/beanvalidation/beanvalidation-api

最后,还有 Bean Validation TCK(测试兼容性工具包),可以通过以下方式检出

git clone https://github.com/beanvalidation/beanvalidation-tck

Hibernate Validator 模块

Hibernate Validator 代码库采用 多模块 Maven 项目的形式,包含以下模块

  • annotation-processor: 用于在编译时检查约束正确性的 HV 注解处理器

  • build-config: 一些用于构建的配置文件

  • cdi: CDI 可移植扩展

  • distribution: 构建已发布的 HV 分发包

  • documentation: 构建 HV 参考指南

  • engine: 核心验证引擎

  • integration: 容器内集成测试

  • modules: 创建 WildFly 补丁以能够在 WildFly 中升级 Hibernate Validator

  • osgi: 包含 HV 功能,用于 Apache Karaf 和 OSGi 集成测试

  • performance: 基于 JMH 的性能测试套件

  • tck-runner: 对 HV 执行 Bean Validation TCK

  • test-utils: 多个模块中使用的测试实用程序方法和注释

从源代码构建

编译和测试

在任何 IDE 中设置项目之前,建议触发命令行构建以验证所有内容都可以构建。只需运行

mvn clean install

这将下载所有依赖项,并编译和测试每个模块。

构建选项

有几个选项/属性可用于控制构建。以下选项可能有助于加快构建时间。默认情况下,所有内容都会被构建!

跳过构建的部分

可以通过 disableDistributionBuild 属性跳过发行版包 (distribution) 的构建

mvn install -DdisableDistributionBuild=true

可以通过 disableDocumentationBuild 属性跳过 documentation 模块的构建

mvn install -DdisableDocumentationBuild=true

在本地安装或快照部署中部署源代码和 javadocs jar

如果您希望在构建过程中安装源代码和 javadocs jar(无论是本地安装还是 SNAPSHOT 部署),请指定 -DperformRelease=true

mvn -DperformRelease=true clean [install|deploy]

另请参阅 此 SO 帖子

在本地暂存 Maven 发布

有时,在不实际部署任何内容的情况下执行 Maven 发布步骤会很方便。这确保发布和部署插件按预期工作。您也可以通过这种方式从现有标签重新构建发布版。

mvn release:stage -DconnectionUrl=scm:git:git://github.com/hibernate/hibernate-validator.git -Dtag=<tag> -DstagingRepository=staging::default::file:///<fully-qualified-path-to-deploy-dir>

编写和构建文档

文档是用 Asciidoc 编写的,可以在您签出的 documentation 模块中找到。 Asciidoctor 用于将 Asciidoc 源代码转换为目标格式。 Asciidoc 语法快速参考 帮助您开始使用语法。您可以通过执行以下操作构建文档

mvn package -pl documentation

IDE 设置

我们建议在导入 IDE 之前触发命令行构建。这样,生成的源代码(在我们的例子中,通过 jaxb2-maven-plugin 生成的 JAXB 绑定类)将可用并可以被 IDE 拾取。

代码风格指南

我们为 Eclipse 和 IDEA 提供了代码风格指南的 IDE 配置:https://github.com/hibernate/hibernate-ide-codestyles

Eclipse

Eclipse 能够导入 Maven 项目(如 Hibernate Validator),而无需插件。要将项目导入 Eclipse,只需按照以下步骤操作

  1. 转到菜单:文件 > 导入 > 现有 Maven 项目

  2. 选择所有项目,然后选择高级 > 名称模板 > [artifactId]-[version]

  3. 从根文件夹运行 maven 构建:项目 'hibernate-validator-parent' 作为 > Maven install 运行

  4. 构建完成后,刷新工作区

  5. 使用 JDK 1.8 的环境 JavaSE-1.8

IDEA

IntelliJ IDEA 自带对多模块 Maven 项目的支持。只需将您的项目导入为 Maven 项目。我们建议以下选项

Maven import options

特别是,应取消选中“排除构建目录”,以便自动将生成的 JAXB 资源添加到 IDE 模块配置中。

代码风格

Hibernate Validator 使用所有 Hibernate 项目通用的代码风格。可以在 这里找到 Eclipse 和 IDEA 的配置文件,以及有关如何在 IDE 中导入样式的详细说明。

运行 TCK 测试

在 IDE 中运行 Bean Validation TCK 测试可能有点繁琐。一种方法是(在 Eclipse 和 IDEA 中应该以相同的方式工作)

  • 创建一个新的 TestNG 测试配置

  • 选择 Suite 选项

  • 选择 tck-runner/target/dependency/beanvalidation-tck-tests-suite.xml 作为套件文件。Maven 构建从 JSR TCK jar 中提取套件文件,并将其放置到此目录中

  • 指定以下 VM 选项(您需要设置与 Maven 构建设置的相同属性,请参阅 pom.xml

-Dvalidation.provider=org.hibernate.validator.HibernateValidator
-DexcludeIntegrationTests=true
  • 选择 hibernate-validator-tck-runner 模块作为项目(Eclipse)或模块以从中获取类路径(IDEA)。

所有步骤都总结在下图中(使用 IDEA)

TCK runner set-up

如果运行此测试配置,将执行所有 TCK 测试。您只需编辑套件文件即可更改要运行的测试,例如

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="JSR-380-TCK" verbose="1">
    <test name="JSR-380-TCK">
        ...
        <classes>
           <class name="org.hibernate.beanvalidation.tck.tests.validation.ValidateTest"/>
        </classes>

    </test>
</suite>

有关如何配置 TestNG 套件文件的更多信息,请参阅 这里

编码指南

一般

在处理新的 HV 功能时,请参考 Hibernate 的 设计理念

确保将以下许可证标题添加到所有新创建的源代码文件中

/*
 * Hibernate Validator, declare and validate application constraints
 *
 * License: Apache License, Version 2.0
 * See the license.txt file in the root directory or <https://apache.ac.cn/licenses/LICENSE-2.0>.
 */

JavaDoc

在处理 Hibernate Validator 代码库时,应遵循以下约定

  • 使用 {@code} 代替 <code>,因为它更易读,并且 {@code} 也会转义元字符

  • @param@return@throw 不以“.”结尾;第一个单词以小写字母开头

  • 如果引用库的其他类和方法,请使用 {@link}

  • {@link} 可以用于外部类,{@code} 也被接受

  • 对于枚举,请使用 <ul/>(而不是“ - ”)

  • 使用上面提到的代码样式模板格式化代码

提供补丁

包括测试和修复问题的补丁始终受欢迎,最好以 GitHub 拉取请求的形式提交。我们遵循 这里所述的“Fork + Pull 模型”。

所有贡献都必须根据 Apache License Version 2.0 提交。所有贡献都受 开发者原始证书 (DCO) 的约束。

返回顶部