设置插件项目
您可以设置一个用于使用用户定义的过程扩展 Neo4j 的项目,构建该项目并将该过程部署到 Neo4j 实例。相同的步骤可用于用户定义的函数。
本节中描述的示例可在 GitHub (neo4j-examples/neo4j-procedure-template) 上找到。 |
使用 Maven 设置项目
可以使用任何允许编译过程并生成 JAR 文件的方式来设置项目。
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.neo4j.example</groupId>
<artifactId>procedure-template</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Neo4j Procedure Template</name>
<description>A template project for building a Neo4j Procedure</description>
<properties>
<java.version>17</java.version>
<maven.compiler.release>${java.version}</maven.compiler.release>
<neo4j.version>5.25.1</neo4j.version>
</properties>
构建依赖项
添加一个依赖项部分,其中包括过程和函数 API,过程和函数在运行时使用这些 API。
范围设置为 provided
,因为一旦过程部署到 Neo4j 实例,Neo4j 就会提供此依赖项。如果向项目添加了非 Neo4j 依赖项,则其范围通常应为 compile
。
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>${neo4j.version}</version>
<scope>provided</scope>
</dependency>
添加测试过程所需的依赖项。
**Neo4j Harness**,一个允许启动轻量级 Neo4j 实例的实用程序。它用于启动 Neo4j 并部署特定的过程或函数,这极大地简化了测试。
**Neo4j Java 驱动程序**,用于发送调用过程或函数的 Cypher 语句。
**JUnit**,一个通用的 Java 测试框架。
<dependency>
<groupId>org.neo4j.test</groupId>
<artifactId>neo4j-harness</artifactId>
<version>${neo4j.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>5.26.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
构建步骤
Maven 将经历的构建项目的步骤。
目标首先是编译源代码,然后将其打包到可以部署到 Neo4j 实例的 JAR 中。
Maven Shade 插件用于打包已编译的过程。它还包括包中的所有依赖项,除非依赖项范围设置为test或provided。
将过程部署到每个 Neo4j 实例的plugins目录并重新启动实例后,该过程即可使用。
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
实现自定义种子提供程序
“从 URI 获取种子”功能提供了从类路径动态发现其他种子提供程序实现的功能。
种子提供程序应在 Java 中实现,本指南提供了有关如何使用 Maven 作为构建工具执行此操作的说明。
设置 Maven 项目
包含此依赖项以针对 Neo4j 提供的 API 进行构建
<dependency>
<groupId>com.neo4j</groupId>
<artifactId>neo4j-dbms-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
实现 Java 类
import com.neo4j.dbms.seeding.ParsedSeedProviderConfig;
import com.neo4j.dbms.seeding.SeedProvider;
public class CustomSeedProvider extends SeedProvider {
public boolean matches(String uri) {
// return true if uri is supported by this
// provider
}
public Path download(
String uri,
Optional<String> credentials,
Optional<String> config,
Path destinationFolder ) throws Exception {
// This method should obtain the downloaded in an
// implementation specific way and copy it to a
// file within the destinationFolder directory.
}
}
要实现自定义种子提供程序,您必须实现两种方法。一种方法是匹配它可以管理的 URI,另一种方法是从给定的 URI 下载备份或转储。
通常,匹配方法使用 URI 方案(第一个冒号之前指定的部分)来确定它是否可以支持给定的 URI。例如,file
、http
、https
等。
下载方法应实现一种特定于方案的方法来获取备份或转储,并将其放置到提供的目标文件夹中的文件中。然后,它应该返回已创建文件的路径。
凭据和配置都通过在 CREATE DATABASE
命令中指定的选项传递。ParsedSeedProviderConfig
提供了一种方便的方法来解析和访问逗号分隔的配置字符串。