jsonapi4j
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>pro.api4</groupId>
<artifactId>jsonapi4j</artifactId>
<version>1.12.0</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<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>pro.api4</groupId>
<artifactId>jsonapi4j</artifactId>
<version>1.12.0</version>
<packaging>pom</packaging>
<name>JsonApi4j - JSON:API Specification Framework for Java</name>
<description>Lightweight Java framework for building REST APIs compliant with the JSON:API specification (jsonapi.org). Supports Spring Boot, Quarkus, and Jakarta Servlet API.</description>
<url>https://api4.pro</url>
<licenses>
<license>
<name>The Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>MoonWorm</id>
<name>Aliaksei Taliuk</name>
<email>aliaksei.taliuk@gmail.com</email>
<url>https://github.com/MoonWorm</url>
<roles>
<role>Author</role>
<role>Project Maintainer</role>
</roles>
<timezone>+1</timezone>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/MoonWorm/jsonapi4j.git</connection>
<developerConnection>scm:git:ssh://git@github.com/MoonWorm/jsonapi4j.git</developerConnection>
<url>https://github.com/MoonWorm/jsonapi4j</url>
<tag>HEAD</tag>
</scm>
<modules>
<module>jsonapi4j-base</module>
<module>jsonapi4j-core</module>
<module>jsonapi4j-plugins</module>
<module>jsonapi4j-compound-docs-resolver</module>
<module>jsonapi4j-rest</module>
<module>jsonapi4j-rest-springboot</module>
<module>jsonapi4j-rest-quarkus-parent</module>
<module>jsonapi4j-report</module>
<module>examples</module>
</modules>
<properties>
<!--project revision-->
<revision>1.12.0</revision>
<!--spring/web-->
<!--The floor of the supported range, not the newest release: compiling against the oldest supported
Spring Boot is what makes "we support 3.0+" enforceable, the same rule the Quarkus and Servlet
floors below follow. Newer versions, including Boot 4, are verified on a schedule.-->
<spring.boot.version>3.0.0</spring.boot.version>
<!--The Spring Framework generation the Boot version above ships with. spring-boot-test only pulls
spring-test transitively from Boot 3.3 onwards, so the test classpath declares it explicitly rather
than depending on a transitive that appears and disappears across the supported range. Spring does
not support mixing Framework module versions, so this moves with spring.boot.version.-->
<spring.framework.version>6.0.2</spring.framework.version>
<!--quarkus-->
<!--The floor of the supported range, not the newest release: compiling against the oldest supported
Quarkus is what makes "we support 3.20+" enforceable. Newer versions are verified by
quarkus-compatibility.yml. Keep this in step with the same property in
jsonapi4j-rest-quarkus-parent and examples.-->
<quarkus.version>3.20.6</quarkus.version>
<!--Servlet 6.0, the floor of the supported range - a 6.1-only API is then a compile error rather than a
runtime failure for a Servlet 6.0 container. The sample apps deliberately run 6.1 (see
examples/pom.xml), so both ends of the range are exercised.-->
<jakarta.servlet-api.version>6.0.0</jakarta.servlet-api.version>
<!--json/yaml-->
<jackson.version>2.22.2</jackson.version>
<!--oas-->
<swagger.version>2.2.55</swagger.version>
<!--utils-->
<apache.commons-collections4.version>4.6.0</apache.commons-collections4.version>
<apache.commons-lang3.version>3.20.0</apache.commons-lang3.version>
<apache.commons-io.version>2.22.0</apache.commons-io.version>
<!--logging-->
<slf4j-api.version>2.0.19</slf4j-api.version>
<!--codegen-->
<lombok.version>1.18.48</lombok.version>
<!--object instantiation without invoking constructors-->
<objenesis.version>3.6</objenesis.version>
<!--test-->
<junit-jupiter-api.version>6.1.3</junit-jupiter-api.version>
<mockito-core.version>5.23.0</mockito-core.version>
<assertj.version>3.27.7</assertj.version>
<!--plugins-->
<flatten-maven-plugin.version>1.8.0</flatten-maven-plugin.version>
<maven-surefire-plugin.version>3.6.0</maven-surefire-plugin.version>
<maven-compiler-plugin.version>3.16.0</maven-compiler-plugin.version>
<jandex-maven-plugin.version>3.6.0</jandex-maven-plugin.version>
<maven.compiler.release>17</maven.compiler.release>
<maven-source-plugin.version>3.4.0</maven-source-plugin.version>
<maven-javadoc-plugin.version>3.12.0</maven-javadoc-plugin.version>
<maven-gpg-plugin.version>3.2.8</maven-gpg-plugin.version>
<jacoco-plugin.version>0.8.15</jacoco-plugin.version>
<central-publishing-maven-plugin.version>0.11.0</central-publishing-maven-plugin.version>
<!--encoding-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<repositories>
<repository>
<id>central</id>
<name>Maven Central</name>
<layout>default</layout>
<url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencyManagement>
<dependencies>
<!--Objenesis-->
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<version>${objenesis.version}</version>
</dependency>
<!--Spring framework-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<!--Quarkus-->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-core</artifactId>
<version>${quarkus.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-core-deployment</artifactId>
<version>${quarkus.version}</version>
</dependency>
<!-- Servlet API -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>${jakarta.servlet-api.version}</version>
</dependency>
<!--OAS-->
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-models-jakarta</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-core-jakarta</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations-jakarta</artifactId>
<version>${swagger.version}</version>
</dependency>
<!--Jackson: imported as a BOM because the artifacts no longer share one version - since 2.20
jackson-annotations is released without a patch component (2.22) while the rest carry one
(2.22.2). A single shared property cannot express both.-->
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>${jackson.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--Commons-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>${apache.commons-collections4.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${apache.commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${apache.commons-io.version}</version>
</dependency>
<!--Lombok-->
<!--Compile-time only: Lombok rewrites the AST and nothing it generates references the jar at
runtime - @NonNull becomes an inline null check, lombok.Generated is CLASS-retention. At compile
scope it propagated onto every consumer's runtime classpath for nothing. provided keeps it on
our own compile classpath (the annotation types still have to resolve) without reaching them.-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<!--Logging-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<!--TEST-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit-jupiter-api.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit-jupiter-api.version}</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito-core.version}</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>${mockito-core.version}</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>${flatten-maven-plugin.version}</version>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
</configuration>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>build-project</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>deploy-to-central</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<source>17</source>
<failOnError>false</failOnError>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${central-publishing-maven-plugin.version}</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>