xyp-sdk
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.github.baljinnyamday</groupId>
<artifactId>xyp-sdk</artifactId>
<version>0.1.0-alpha.1</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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.baljinnyamday</groupId>
<artifactId>xyp-sdk</artifactId>
<version>0.1.0-alpha.1</version>
<packaging>jar</packaging>
<name>XYP SDK</name>
<description>Typed Java SDK for XYP (ХУР), Mongolia's government data exchange system</description>
<url>https://github.com/baljinnyamday/xyp-sdk/tree/main/packages/java</url>
<inceptionYear>2026</inceptionYear>
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/license/mit</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>baljinnyamday</id>
<name>baljinnyamday</name>
<url>https://github.com/baljinnyamday</url>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/baljinnyamday/xyp-sdk.git</connection>
<developerConnection>scm:git:ssh://git@github.com/baljinnyamday/xyp-sdk.git</developerConnection>
<url>https://github.com/baljinnyamday/xyp-sdk/tree/main/packages/java</url>
<tag>HEAD</tag>
</scm>
<issueManagement>
<system>GitHub Issues</system>
<url>https://github.com/baljinnyamday/xyp-sdk/issues</url>
</issueManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.release>17</maven.compiler.release>
<!-- Reproducible builds: every entry in the jars gets this timestamp. -->
<project.build.outputTimestamp>2026-09-22T00:00:00Z</project.build.outputTimestamp>
<!-- Test-only dependencies. The library itself has none at runtime. -->
<junit.version>6.1.3</junit.version>
<jackson.version>2.22.3</jackson.version>
<!-- Plugins -->
<maven-clean-plugin.version>3.5.0</maven-clean-plugin.version>
<maven-resources-plugin.version>3.5.0</maven-resources-plugin.version>
<maven-compiler-plugin.version>3.16.0</maven-compiler-plugin.version>
<maven-surefire-plugin.version>3.6.0</maven-surefire-plugin.version>
<maven-jar-plugin.version>3.5.1</maven-jar-plugin.version>
<maven-source-plugin.version>3.4.0</maven-source-plugin.version>
<maven-javadoc-plugin.version>3.12.0</maven-javadoc-plugin.version>
<maven-install-plugin.version>3.2.0</maven-install-plugin.version>
<maven-deploy-plugin.version>3.2.0</maven-deploy-plugin.version>
<maven-site-plugin.version>3.22.0</maven-site-plugin.version>
<maven-enforcer-plugin.version>3.6.3</maven-enforcer-plugin.version>
<!-- Run from the command line only: CI reads project.version with help:evaluate, and a
release bumps it with versions:set. Pinned here so both behave the same everywhere. -->
<maven-help-plugin.version>3.5.2</maven-help-plugin.version>
<versions-maven-plugin.version>2.22.0</versions-maven-plugin.version>
<maven-gpg-plugin.version>3.2.8</maven-gpg-plugin.version>
<central-publishing-maven-plugin.version>0.11.0</central-publishing-maven-plugin.version>
<spotless-maven-plugin.version>3.10.2</spotless-maven-plugin.version>
<google-java-format.version>1.36.1</google-java-format.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${junit.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<!-- Reads the shared envelope fixtures (src/test/resources/envelopes.json). -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven-clean-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
</plugin>
<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-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${maven-install-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${maven-site-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven-enforcer-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-help-plugin</artifactId>
<version>${maven-help-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>${versions-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${central-publishing-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>${spotless-maven-plugin.version}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-build-environment</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>[3.9,)</version>
</requireMavenVersion>
<requireJavaVersion>
<version>[17,)</version>
</requireJavaVersion>
<requirePluginVersions>
<message>Pin every plugin version, so the build is the same everywhere.</message>
</requirePluginVersions>
<dependencyConvergence />
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<parameters>true</parameters>
<showWarnings>true</showWarnings>
<compilerArgs>
<arg>-Xlint:all</arg>
<arg>-Werror</arg>
</compilerArgs>
</configuration>
<executions>
<execution>
<id>default-testCompile</id>
<configuration>
<compilerArgs combine.children="append">
<!-- The tests run a com.sun.net.httpserver fake of XYP inside the patched module. -->
<arg>--add-modules</arg>
<arg>jdk.httpserver</arg>
<arg>--add-reads</arg>
<arg>io.github.baljinnyamday.xyp=jdk.httpserver</arg>
</compilerArgs>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>--add-modules jdk.httpserver --add-reads io.github.baljinnyamday.xyp=jdk.httpserver</argLine>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<!-- The generated service packages document every method but not every
accessor of their records, hence -missing. -->
<doclint>all,-missing</doclint>
<failOnWarnings>true</failOnWarnings>
<quiet>true</quiet>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<configuration>
<java>
<googleJavaFormat>
<version>${google-java-format.version}</version>
</googleJavaFormat>
</java>
</configuration>
<executions>
<execution>
<id>check-formatting</id>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<!-- google-java-format needs Java 21 to run. The library still compiles and is tested on 17;
formatting is checked by the builds on 21 and later. -->
<profile>
<id>no-format-check-before-java-21</id>
<activation>
<jdk>[17,21)</jdk>
</activation>
<properties>
<spotless.check.skip>true</spotless.check.skip>
</properties>
</profile>
<!-- Publishing to Maven Central: ./mvnw -B -Prelease deploy
Needs the `central` server credentials (a Central Portal user token) in settings.xml and
the signing key in gpg's keyring; the key's passphrase comes from MAVEN_GPG_PASSPHRASE.
.github/workflows/java-release.yml sets all three up. -->
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<!-- The passphrase may only come from MAVEN_GPG_PASSPHRASE (the plugin's default)
or gpg-agent, never from settings.xml or this file. With a passphrase set,
the plugin itself runs gpg with batch mode and loopback pinentry. -->
<bestPractices>true</bestPractices>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<deploymentName>${project.artifactId} ${project.version}</deploymentName>
<autoPublish>true</autoPublish>
<!-- The release workflow only creates the GitHub release once this returns, so it
waits for the Portal to publish; that usually takes minutes, rarely longer. -->
<waitUntil>published</waitUntil>
<waitMaxTime>3600</waitMaxTime>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>