soklet
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>com.soklet</groupId>
<artifactId>soklet</artifactId>
<version>3.5.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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.soklet</groupId>
<artifactId>soklet</artifactId>
<version>3.5.1</version>
<packaging>jar</packaging>
<name>Soklet</name>
<description>A zero-dependency HTTP/1.1 server and routing library for Java, well-suited for building RESTful APIs, broadcasting Server-Sent Events, and serving Model Context Protocol endpoints.</description>
<url>https://www.soklet.com</url>
<licenses>
<license>
<name>The Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<name>Mark Allen</name>
<email>mark@revetware.com</email>
<organization>Revetware LLC</organization>
<organizationUrl>https://www.revetware.com</organizationUrl>
</developer>
</developers>
<scm>
<connection>scm:git:git@github.com:soklet/soklet.git</connection>
<developerConnection>scm:git:git@github.com:soklet/soklet.git</developerConnection>
<url>git@github.com:soklet/soklet.git</url>
</scm>
<distributionManagement>
<repository>
<name>Central Portal Snapshots</name>
<id>central-portal-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Empty by default. The "jdk23-plus-unsafe-memory-access" profile sets this to the JDK 23+
"sun.misc.Unsafe memory-access" allow flag (JEP 471), which the JVM only recognizes on
JDK 23 and newer. Passing it on JDK 17 through 22 crashes the forked test VM with an
"Unrecognized option" error. -->
<surefire.unsafeMemoryAccessArg></surefire.unsafeMemoryAccessArg>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.0</version>
<configuration>
<release>17</release>
<compilerArgs>
<arg>-parameters</arg>
<arg>-Xlint:unchecked</arg>
</compilerArgs>
<!-- Maven compiler plugin discovers Soklet's internal annotation processor
and tries to apply it to itself...prevent that here -->
<proc>none</proc>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.1</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-jar-plugin</artifactId>
<version>3.4.2</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Automatic-Module-Name>com.soklet</Automatic-Module-Name>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.12.0</version>
<configuration>
<links>
<link>https://docs.oracle.com/en/java/javase/26/docs/api/</link>
<link>https://javadoc.io/doc/com.google.code.findbugs/jsr305/3.0.2/</link>
<link>https://javadoc.io/doc/org.jspecify/jspecify/1.0.0/</link>
</links>
<quiet>true</quiet>
<notimestamp>true</notimestamp>
<encoding>UTF-8</encoding>
<docencoding>UTF-8</docencoding>
<charset>UTF-8</charset>
<excludePackageNames>com.soklet.internal.microhttp:com.soklet.internal.spring:com.soklet.internal.util</excludePackageNames>
<additionalOptions>
<additionalOption>-XDignore.symbol.file</additionalOption>
<additionalOption>-Xdoclint:-html</additionalOption>
</additionalOptions>
<linksource>true</linksource>
<show>public</show>
<bottom><![CDATA[Copyright 2015-2022 <a href="https://www.xmog.com" target="_blank">Transmogrify LLC<a>, 2022-2026 <a href="https://www.revetware.com" target="_blank">Revetware LLC<a>.]]></bottom>
<source>17</source>
<failOnError>true</failOnError>
<overview>${basedir}/src/main/javadoc/overview.html</overview>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central-portal</publishingServerId>
</configuration>
</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>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.4</version>
<configuration>
<argLine>
--enable-native-access=ALL-UNNAMED
${surefire.unsafeMemoryAccessArg}
</argLine>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- Compile-time-only deps -->
<dependency>
<groupId>org.jspecify</groupId>
<artifactId>jspecify</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_annotations</artifactId>
<version>2.49.0</version>
<scope>provided</scope>
</dependency>
<!-- Testing-only deps -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.13.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.testing.compile</groupId>
<artifactId>compile-testing</artifactId>
<version>0.23.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<!-- The "sun.misc.Unsafe memory-access" allow flag exists only on JDK 23+ (JEP 471). Apply it
(to silence sun.misc.Unsafe deprecation warnings) only where the JVM recognizes it; on
JDK 17 through 22 the property stays empty so the forked Surefire test VM starts normally.
Profile activation keys off the JDK running Maven, which on CI is the same JDK that forks
the test VM. -->
<profile>
<id>jdk23-plus-unsafe-memory-access</id>
<activation>
<jdk>[23,)</jdk>
</activation>
<properties>
<surefire.unsafeMemoryAccessArg>--sun-misc-unsafe-memory-access=allow</surefire.unsafeMemoryAccessArg>
</properties>
</profile>
<!-- Static-analysis gate (M5). Opt-in; run on JDK 21+ ONLY. Error Prone requires JDK 21+ to
run and lags the newest JDKs, so it is NOT part of the JDK 17/25 test matrix - it runs as a
dedicated lint job on JDK 21. The default build, the release-17 target, and every test leg
are untouched when this profile is inactive.
JAVA_HOME=<jdk21> mvn -Pstatic-analysis clean compile
Error Prone + NullAway run as compiler plugins via annotationProcessorPaths. NullAway uses
legacy AnnotatedPackages mode (the code carries explicit @NonNull/@Nullable everywhere, and
JSpecify mode is still experimental), treating com.soklet as non-null-by-default and honoring
the existing @Nullable markers. Error Prone's default-ERROR checks and selected high-signal
WARNING checks are enforced; NullAway runs at WARN for advisory visibility while the existing
inventory is burned down. Vendored Spring sources are excluded, but Soklet-owned internals such
as microhttp remain in scope. -->
<profile>
<id>static-analysis</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration combine.self="override">
<release>17</release>
<fork>true</fork>
<!-- The default build sets proc=none; Error Prone needs annotation
processing enabled. Listing only Error Prone + NullAway on the processor
path keeps Soklet's own SokletProcessor from self-applying. -->
<proc>full</proc>
<annotationProcessorPaths>
<path>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>2.49.0</version>
</path>
<path>
<groupId>com.uber.nullaway</groupId>
<artifactId>nullaway</artifactId>
<version>0.13.4</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>-parameters</arg>
<arg>-Xlint:unchecked</arg>
<!-- javac caps displayed errors/warnings at 100 by default; raise both so
the static-analysis run reports the COMPLETE finding inventory. -->
<arg>-Xmaxwarns</arg>
<arg>100000</arg>
<arg>-Xmaxerrs</arg>
<arg>100000</arg>
<arg>-XDcompilePolicy=simple</arg>
<arg>--should-stop=ifError=FLOW</arg>
<arg>-XDaddTypeAnnotationsToSymbol=true</arg>
<arg>-Xplugin:ErrorProne -XepExcludedPaths:.*/com/soklet/internal/spring/.* -Xep:NullAway:WARN -XepOpt:NullAway:AnnotatedPackages=com.soklet -XepOpt:NullAway:UnannotatedSubPackages=com.soklet.internal.spring -Xep:DefaultCharset:ERROR -Xep:StringSplitter:ERROR -Xep:StringCaseLocaleUsage:ERROR -Xep:ReferenceEquality:ERROR -Xep:EmptyCatch:ERROR -Xep:NullableVoid:ERROR -Xep:AnnotateFormatMethod:ERROR -Xep:UnusedMethod:ERROR -Xep:UnusedVariable:ERROR -Xep:Finally:ERROR -Xep:NarrowingCompoundAssignment:ERROR -Xep:EffectivelyPrivate:OFF -Xep:PatternMatchingInstanceof:OFF -Xep:ProtectedMembersInFinalClass:OFF -Xep:UnnecessaryParentheses:OFF -Xep:MissingSummary:OFF -Xep:ClassCanBeStatic:OFF -Xep:StatementSwitchToExpressionSwitch:OFF -Xep:BadImport:OFF -Xep:BooleanLiteral:OFF -Xep:SameNameButDifferent:OFF -Xep:TypeParameterUnusedInFormals:OFF -Xep:NullablePrimitiveArray:OFF -Xep:JdkObsolete:OFF -Xep:IntLiteralCast:OFF -Xep:JavaUtilDate:OFF -Xep:ArrayRecordComponent:OFF -Xep:UnnecessaryAsync:OFF -Xep:TimeInStaticInitializer:OFF</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- SpotBugs gate (M5). Opt-in and CI-pinned to JDK 21. The exclude filter is a documented
reviewed baseline for low-signal categories in this codebase; new unfiltered correctness,
nullness, threading, and resource-management findings fail the build.
JAVA_HOME=<jdk21> mvn -Pspotbugs -DskipTests compile spotbugs:check
-->
<profile>
<id>spotbugs</id>
<build>
<plugins>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.9.8.3</version>
<configuration>
<effort>Max</effort>
<threshold>Medium</threshold>
<failOnError>true</failOnError>
<xmlOutput>true</xmlOutput>
<excludeFilterFile>${project.basedir}/config/spotbugs-exclude.xml</excludeFilterFile>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>