构建系统集成
识别构建系统
一些 Hibernate 项目使用 Maven,其他一些项目使用 Gradle。 从 GitHub 检出项目后,检查源代码根目录中是否存在 pom.xml
文件:如果有,则表示它是一个 Maven 项目。 如果存在 build.gradle
文件,则需要使用 Gradle 构建它。
Maven
我们建议使用优秀的 m2e 插件。 此插件通常已安装在 Eclipse 中; 如果您怀疑它丢失了,则可以在“帮助”→“安装新软件”下找到它。
在使用 m2e 导入 Hibernate 项目时,Eclipse 可能会建议安装其他插件,例如用于处理注解处理器的插件。 它会要求您允许自动下载其他插件; 我们建议您允许此操作,因为它简化了开发。
Gradle
您需要安装“Buildship”,即用于 Eclipse 的 Gradle 工具。
安装它非常简单:只需按照 本分步教程 操作即可。
安装了 Gradle 工具后,使用“gradle wrapper”方法导入项目,该方法是默认方法。 这可能需要几分钟,因为 Gradle 构建可能需要在后台下载依赖项或执行一些操作来分析项目。
在 Eclipse 中针对 Hibernate ORM 的特定说明
如果您要导入旗舰项目 Hibernate ORM,导入过程会变得更加繁琐,因为 Eclipse/Gradle 集成仍然有些限制。
导入项目后,Eclipse 会因为“循环依赖问题”而提示一些错误。 项目实际上没有任何循环依赖,但是 Gradle 集成会导致它认为有循环依赖;你需要进入“Window” → “Preferences” → “Java” → “Compiler” → “Building”,找到“Circular Dependencies”问题,并将 Eclipse 对该问题的分类改为“Warning”而不是“Error”,从而忽略该问题。
接下来,对于几个模块,你需要手动将一些生成的源代码添加到源代码文件夹中。 例如,对于 hibernate-core 模块,你需要添加 `target/generated-src/antlr/main`、`target/generated-src/apt/main`、`target/generated-src/apt/test` 和 `target/generated-src/jaxb/main`。 请注意,这些目录默认情况下可能隐藏,请检查你的过滤器选项并取消选中“Gradle build folder”。 对每个目录使用“Build Path” → “Use as Source Folder”。
最后,你需要手动添加 ANT 和 JBoss Logger 依赖项。
代码格式化
从 Eclipse 菜单中:选择“Window” → “Preferences”,选择“Java” → “Code Style” → “Formatter”。 从 GitHub 下载 hibernate-java-formatting.xml 并将其导入 Eclipse 以应用 Hibernate 团队在整个代码库中一致使用的样式。
请避免重新格式化大段代码,特别是在提供补丁时:我们希望 diff 突出显示重要的更改。 如果你觉得需要修复现有源代码文件的格式,请确保将格式化修复隔离在一个单独的提交中,该提交仅包含格式化更改(在该提交中避免任何功能更改),并确保提交消息提及这一点。 |
代码模板
在相同的“Window” → “Preferences”菜单中,选择“Java” → “Code Style” → “Code Templates” 并导入从我们的 GitHub 存储库下载的适当文件
-
对于 Hibernate ORM:
hibernate-code-templates-orm.xml
. -
对于 Hibernate Search:
hibernate-code-templates-search.xml
. -
对于 Hibernate OGM:
hibernate-code-templates-ogm.xml
. -
对于 Hibernate Validator:
hibernate-code-templates-validator.xml
.
使用这些模板,新创建的文件将自动具有正确的版权/许可证头。 随意添加你的昵称或全名作为新文件的作者,并可选地提供电子邮件。 版权/许可证头是必需的。
你也可以使用 hibernate-auto-cleanup.xml
,将其导入“Java” → “Code Style” → “Clean Up”。
在 Eclipse 中运行测试
一些涉及与 JGroups 和/或 Infinispan 集成的测试将启动一个网络连接到自身(通过 localhost)以模拟一个计算机集群。 许多 JVM 默认情况下使用 IPv6,所以要么你正确配置了它,要么你可能想要使用以下 JVM 属性设置启动这些测试
-Djava.net.preferIPv4Stack=true -Djgroups.bind_addr=127.0.0.1
调试
在调试时,Eclipse 可能会对用于检查的对象调用 `toString()` 方法。 此操作可能会触发代理的初始化,从而影响调试对象的 state。 使用 Eclipse,你可以自定义它显示对象的方式:查看“Detail formatters”和 IntelliJ IDEA 页面 寻找一些想法。 你可以避免在你的 `toString()` 实现中包含延迟加载的详细信息:它还有助于避免在日志记录期间意外加载,这是一个常见的错误,对性能有可怕的影响。
其他
如果你想为 Hibernate 项目做出贡献,请从 这里 开始。