构建 Spring Data Neo4j

要求

  • JDK 17+ (可以是 OpenJDKOracle JDK)

  • Maven 3.8.5(我们提供 Maven 包装器,请参阅项目根目录下的 mvnwmvnw.cmd;包装器会自动下载适当的 Maven 版本)

  • 一个 Neo4j 5.+ 数据库,可以

关于 JDK 版本

选择 JDK 17 是受多方面影响的决定

  • SDN 是一个 Spring Data 项目。Spring Data Commons 的基线是 JDK 17,Spring Framework 也是如此。因此,保持 JDK 17 基线是自然而然的事情。

运行构建

以下部分是替代方案,大致按工作量增加的顺序排列。

所有构建都需要项目的本地副本

克隆 SDN
$ git clone [email protected]:spring-projects/spring-data-neo4j.git

在继续之前,请验证您本地安装的 JDK 版本。输出应类似

验证您的 JDK
$ java -version
java version "18.0.1" 2022-04-19
Java(TM) SE Runtime Environment (build 18.0.1+10-24)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.1+10-24, mixed mode, sharing)

已安装 Docker

使用默认镜像

如果您没有安装 Docker,请前往 Docker Desktop。简而言之,Docker 是一个工具,它通过操作系统级别的虚拟化,在所谓的容器中运行轻量级软件镜像。

我们的构建使用 Testcontainers Neo4j 来启动数据库实例。

在 Linux / macOS 上使用默认设置进行构建
$ ./mvnw clean verify

在 Windows 机器上,使用

在 Windows 上使用默认设置进行构建
$ mvnw.cmd clean verify

输出应该类似。

使用其他镜像

要使用的镜像版本可以通过环境变量进行配置,如下所示

使用不同的 Neo4j Docker 镜像构建
$ SDN_NEO4J_VERSION=5.3.0-enterprise SDN_NEO4J_ACCEPT_COMMERCIAL_EDITION=yes ./mvnw clean verify

这里我们使用的是 5.3.0 企业版,并接受了许可协议。

如果内联指定环境变量对您不起作用,请查阅您的操作系统或 shell 手册,了解如何定义环境变量。

针对本地运行的数据库

针对本地运行的数据库 擦除其全部内容。

针对本地运行的数据库进行构建速度更快,因为它不会每次都重新启动容器。我们在开发过程中经常这样做。

您可以从我们的 下载中心 免费获取 Neo4j 的副本。

请下载适用于您的操作系统的版本,并按照说明启动它。一个必要的步骤是,在启动数据库后,打开浏览器并访问 localhost:7474,并将默认密码从 neo4j 更改为您喜欢的密码。

之后,您可以通过指定本地 bolt URL 来运行完整的构建

使用本地运行的数据库进行构建
$ SDN_NEO4J_URL=bolt://:7687 SDN_NEO4J_PASSWORD=verysecret ./mvnw clean verify

控制构建的环境变量摘要

名称 默认值 含义

SDN_NEO4J_VERSION

5.3.0

要使用的 Neo4j Docker 镜像版本,请参阅 Neo4j Docker 官方镜像

SDN_NEO4J_ACCEPT_COMMERCIAL_EDITION

no

某些测试可能需要 Neo4j 的企业版。我们内部构建和测试时使用企业版,但如果您不想,我们不会强迫您接受许可证。

SDN_NEO4J_URL

未设置

设置此环境变量允许连接到本地运行的 Neo4j 实例。我们在开发过程中经常使用它。

SDN_NEO4J_PASSWORD

未设置

为通过 SDN_NEO4J_URL 配置的实例的 neo4j 用户设置密码。

您需要同时设置 SDN_NEO4J_URLSDN_NEO4J_PASSWORD 才能使用本地实例。

Checkstyle 及其他

目前没有质量门来确保代码/测试比例保持不变,但请考虑为您的贡献添加测试。

我们有一些相当宽松的 Checkstyle 规则,或多或少强制执行默认的 Java 格式规则。如果存在格式错误或诸如未使用的导入之类的问题,您的构建将失败。

© . This site is unofficial and not affiliated with VMware.