使用 maven repo 分发 JSON Schema 文件

Use maven repo to distribute JSON Schema files

在我的 Java 微服务中,我想使用 JSON 模式验证我的 JSON 对象。我有一堆 JSON 架构文件。这一切都很好。

我可以使用 Maven 存储库来分发我的 JSON 架构文件,然后在我的服务中添加 Maven 依赖项和 select 来自本地 Maven 存储库中的本地架构文件,因为我需要验证JSON 个对象?

我知道我可以保留我的架构文件并联系它们,但我想看看是否有某种方法可以为此使用 maven?

谢谢,我希望我的问题很清楚。

一种可能的解决方案是将模式简单地包装到一个或多个 jar 文件中,然后像读取任何资源文件一样读取它们。

这里有一些示例代码来演示:

这里是架构项目的项目结构截图:

这个项目的 POM 非常简单,因为它只是一个简单的 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>my.group</groupId>
  <artifactId>schemas</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</project>

消费schemas项目的项目只需要添加对schemas项目的依赖:

<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>my.group</groupId>
    <artifactId>schema-consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>my.group</groupId>
            <artifactId>schemas</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

读取模式的代码很简单——正如我之前所说,它就像读取任何其他资源文件一样。下面是一些读取模式文件并将输出转储到控制台的示例代码:

package my.pkg;

import java.io.InputStream;
import java.util.Scanner;

public class ReadSchema {

    public static void main(String[] args) {
        InputStream inStream = ReadSchema.class.getClassLoader().getResourceAsStream("schema.json");
        Scanner scan = new Scanner(inStream);
        scan.useDelimiter("\A");
        String json = scan.next();

        System.out.println(json);
        scan.close();
    }

}

希望对您有所帮助!