您想实现一个新的验证功能,或者您发现了一个错误并想提供一个修复? 太棒了! 以下内容可以帮助您入门。
要求
-
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
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: 多个模块中使用的测试实用程序方法和注释
从源代码构建
构建选项
有几个选项/属性可用于控制构建。以下选项可能有助于加快构建时间。默认情况下,所有内容都会被构建!
跳过构建的部分
可以通过 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 帖子。
编写和构建文档
文档是用 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,只需按照以下步骤操作
-
转到菜单:文件 > 导入 > 现有 Maven 项目
-
选择所有项目,然后选择高级 > 名称模板 > [artifactId]-[version]
-
从根文件夹运行 maven 构建:项目 'hibernate-validator-parent' 作为 > Maven install 运行
-
构建完成后,刷新工作区
-
使用 JDK 1.8 的环境 JavaSE-1.8
IDEA
IntelliJ IDEA 自带对多模块 Maven 项目的支持。只需将您的项目导入为 Maven 项目。我们建议以下选项

特别是,应取消选中“排除构建目录”,以便自动将生成的 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 测试。您只需编辑套件文件即可更改要运行的测试,例如
<!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) 的约束。