quant4j
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.quant4j</groupId>
<artifactId>quant4j</artifactId>
<version>1.0.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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- ===== Coordinates ===== -->
<groupId>io.quant4j</groupId>
<artifactId>quant4j</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<!-- ===== Project metadata ===== -->
<name>Quant4J</name>
<description>A quantitative finance library for Java.</description>
<url>https://github.com/achraf-hasbi/quant4j</url>
<inceptionYear>2025</inceptionYear>
<licenses>
<license>
<name>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>achrafhasbi</id>
<name>Achraf Hasbi</name>
<email>achraf.hasbi@gmail.com</email>
<url>https://github.com/achraf-hasbi</url>
</developer>
</developers>
<scm>
<connection>scm:git:git://github.com/achraf-hasbi/quant4j.git</connection>
<developerConnection>scm:git:ssh://github.com/achraf-hasbi/quant4j.git</developerConnection>
<url>https://github.com/achraf-hasbi/quant4j/tree/main</url>
<tag>v1.0.0</tag>
</scm>
<issueManagement>
<system>GitHub Issues</system>
<url>https://github.com/achraf-hasbi/quant4j/issues</url>
</issueManagement>
<!-- ===== Properties ===== -->
<properties>
<!-- Java -->
<java.version>21</java.version>
<maven.compiler.release>${java.version}</maven.compiler.release>
<!-- Encoding -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Dependency versions -->
<junit.version>5.10.2</junit.version>
<!-- Plugin versions -->
<plugin.compiler.version>3.13.0</plugin.compiler.version>
<plugin.surefire.version>3.2.5</plugin.surefire.version>
<plugin.source.version>3.3.1</plugin.source.version>
<plugin.javadoc.version>3.7.0</plugin.javadoc.version>
<plugin.jacoco.version>0.8.12</plugin.jacoco.version>
<plugin.checkstyle.version>3.4.0</plugin.checkstyle.version>
<checkstyle.version>10.17.0</checkstyle.version>
<plugin.central.version>0.6.0</plugin.central.version>
<plugin.gpg.version>3.2.8</plugin.gpg.version>
</properties>
<!-- ===== Dependencies ===== -->
<dependencies>
<!--
junit-jupiter aggregator: pulls in junit-jupiter-api,
junit-jupiter-params, and junit-jupiter-engine.
-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- ===== Build ===== -->
<build>
<plugins>
<!-- 1. Compiler — Java 21, treat all warnings as informational -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${plugin.compiler.version}</version>
<configuration>
<release>${java.version}</release>
</configuration>
</plugin>
<!-- 2. Test runner — JUnit 5 via Surefire 3.x -->
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${plugin.surefire.version}</version>
<configuration>
<useModulePath>false</useModulePath>
</configuration>
</plugin>
<!-- 3. Attach source jar (required for Maven Central publication) -->
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>${plugin.source.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 4. Attach Javadoc jar (required for Maven Central publication) -->
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${plugin.javadoc.version}</version>
<configuration>
<release>${java.version}</release>
<doclint>all</doclint>
<failOnError>true</failOnError>
<quiet>true</quiet>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 5. JaCoCo — measure and report code coverage -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${plugin.jacoco.version}</version>
<executions>
<!-- Instrument the JVM for coverage collection before tests run -->
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!-- Generate HTML + XML report after tests complete -->
<execution>
<id>report</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 6. Checkstyle — enforce code style on main sources -->
<plugin>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${plugin.checkstyle.version}</version>
<dependencies>
<!-- Pin the Checkstyle engine version independently of the plugin -->
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>${checkstyle.version}</version>
</dependency>
</dependencies>
<configuration>
<configLocation>${project.basedir}/checkstyle.xml</configLocation>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
<!-- Test sources follow relaxed conventions; exclude them here -->
<includeTestSourceDirectory>false</includeTestSourceDirectory>
</configuration>
<executions>
<execution>
<id>validate</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- ===== Release profile (activated with -Prelease) ===== -->
<!--
Maven Central requires signed artifacts. Run with:
mvn deploy -Prelease
Credentials are read from ~/.m2/settings.xml under server id "central".
The GPG key must be published to a public keyserver.
-->
<profiles>
<profile>
<id>release</id>
<build>
<plugins>
<!-- 7. Sign all artifacts with GPG (required by Maven Central) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${plugin.gpg.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<!--
Passphrase can be supplied via:
-Dgpg.passphrase=... on the command line, or
<passphrase> in ~/.m2/settings.xml <server> block.
-->
<executable>gpg</executable>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
<!-- 8. Publish to Maven Central via Central Portal -->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${plugin.central.version}</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<!-- false = artifact sits in portal for manual review before going live -->
<autoPublish>false</autoPublish>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>