wickra-xray
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>org.wickra</groupId>
<artifactId>wickra-xray</artifactId>
<version>0.1.4</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>org.wickra</groupId>
<artifactId>wickra-xray</artifactId>
<version>0.1.4</version>
<packaging>jar</packaging>
<name>wickra-xray</name>
<description>The data-driven market-microstructure frame core for the JVM over the Wickra C ABI (FFM/Panama): build an Xray from a spec, drive it with commands, read back render frames.</description>
<url>https://github.com/wickra-lib/wickra-xray</url>
<licenses>
<license>
<name>MIT OR Apache-2.0</name>
</license>
</licenses>
<!--
Maven Central requires both of these and rejects the deployment without
them: `SCM URL is not defined` and `Developers information is missing`.
That is a POM problem rather than a publishing one: nothing reaches the
repository, and `github-release` depends on this job, so the whole GitHub
Release goes with it.
-->
<scm>
<connection>scm:git:https://github.com/wickra-lib/wickra-xray.git</connection>
<developerConnection>scm:git:https://github.com/wickra-lib/wickra-xray.git</developerConnection>
<url>https://github.com/wickra-lib/wickra-xray</url>
</scm>
<developers>
<developer>
<id>kingchenc</id>
<name>kingchenc</name>
<url>https://github.com/kingchenc</url>
</developer>
</developers>
<properties>
<maven.compiler.release>22</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- The native C ABI library is built by `cargo build -p wickra-xray-c`
(debug profile) into the workspace target/debug directory. -->
<native.lib.dir>${project.basedir}/../../target/debug</native.lib.dir>
<junit.version>6.1.3</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.16.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<!-- FFM needs native access enabled. native.lib.dir goes through
systemPropertyVariables (not argLine) so a path with spaces is not
split into separate JVM arguments. -->
<argLine>--enable-native-access=ALL-UNNAMED</argLine>
<systemPropertyVariables>
<native.lib.dir>${native.lib.dir}</native.lib.dir>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<!--
Release profile (CI only, gated). `release.yml` runs
`mvn -B -f bindings/java -Prelease deploy -DskipTests`, so everything
Maven Central requires beyond a plain jar lives here: a sources jar, a
javadoc jar, a GPG signature over every artifact, and the publishing
plugin that uploads them.
Maven only warns about a `-P` that matches nothing, so without this block
the deploy runs bare and dies on `repository element was not specified in
the POM inside distributionManagement`, which is Maven saying it had nowhere
to send the artifacts. `github-release` depends on this job, so that
rejection would take the whole GitHub Release with it.
The native libraries are staged into src/main/resources/native/<os>-<arch>/
from the c-abi-* artifacts before the deploy runs, so the published jar
carries every platform's library.
-->
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.4.0</version>
<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>
<version>3.12.0</version>
<configuration>
<!-- Central requires a javadoc jar, not perfect javadoc; doclint
would fail the release over a missing @param on a binding
whose contract is the C ABI. -->
<doclint>none</doclint>
<quiet>true</quiet>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals><goal>jar</goal></goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals><goal>sign</goal></goals>
<configuration>
<!-- Non-interactive signing on CI: modern GPG needs loopback
pinentry to take the passphrase from the env without a
TTY. The key and passphrase are wired in by setup-java. -->
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.11.0</version>
<extensions>true</extensions>
<configuration>
<!-- Matches `server-id: central` in the setup-java step, which is
where CENTRAL_USERNAME / CENTRAL_PASSWORD are bound. -->
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
<!-- Wait for the deployment to be *published*, not merely
validated. The default stops at validation and prints "to
finish publishing visit ...", so the job goes green while the
artifact is not yet on the repository, and anything that fails
after validation is invisible to this workflow. A green Maven
job should mean the jar is public. -->
<waitUntil>published</waitUntil>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>