構建 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.