second first commit
This commit is contained in:
@@ -0,0 +1,490 @@
|
||||
<?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.hectorvent</groupId>
|
||||
<artifactId>floci</artifactId>
|
||||
<version>2.1.0</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Floci</name>
|
||||
<description>Fast, free, open-source local AWS emulator supporting SSM, SQS, SNS, SES, S3, DynamoDB, Lambda, API Gateway, Cognito, KMS, Kinesis, Secrets Manager, CloudFormation, Step Functions, IAM, STS, ElastiCache, RDS, EventBridge, and CloudWatch</description>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.release>25</maven.compiler.release>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<quarkus.platform.version>3.39.2</quarkus.platform.version>
|
||||
<jackson.version>2.22.2</jackson.version>
|
||||
<apicurio.version>2.6.13.Final</apicurio.version>
|
||||
<everit.json.schema.version>1.14.6</everit.json.schema.version>
|
||||
<wire.version>6.4.7</wire.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson</groupId>
|
||||
<artifactId>jackson-bom</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.quarkus.platform</groupId>
|
||||
<artifactId>quarkus-bom</artifactId>
|
||||
<version>${quarkus.platform.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
<version>3.25.9</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java-util</artifactId>
|
||||
<version>3.25.9</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.api.grpc</groupId>
|
||||
<artifactId>proto-google-common-protos</artifactId>
|
||||
<version>2.49.0</version>
|
||||
</dependency>
|
||||
<!-- Matched to httpclient5 5.5.1 (its own declared core). The Quarkus 3.38+ BOM manages
|
||||
httpcore5 5.4, whose SocketConfig defaults turn on TCP keep-alive with a keep-idle of 5 s;
|
||||
httpclient5 then sets that extended option through reflection on docker-java's UnixSocket,
|
||||
which is unregistered in the native image, and every Docker call fails with
|
||||
"Failure setting extended socket option". docker-java is the only consumer of httpcore5. -->
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents.core5</groupId>
|
||||
<artifactId>httpcore5</artifactId>
|
||||
<version>5.3.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents.core5</groupId>
|
||||
<artifactId>httpcore5-h2</artifactId>
|
||||
<version>5.3.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2-mvstore</artifactId>
|
||||
<version>2.4.240</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.squareup.wire</groupId>
|
||||
<artifactId>wire-runtime</artifactId>
|
||||
<version>${wire.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.squareup.wire</groupId>
|
||||
<artifactId>wire-runtime-jvm</artifactId>
|
||||
<version>${wire.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<dependencies>
|
||||
<!-- Quarkus REST (RESTEasy Reactive) -->
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-rest-jackson</artifactId>
|
||||
<!-- brotli4j resolves a JNI jar for the build host's platform (native-osx-aarch64 on a
|
||||
Mac, native-linux-* in CI); Floci never enables Brotli HTTP compression. Maven
|
||||
wildcards match a whole artifactId only, hence the explicit list. -->
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.aayushatharva.brotli4j</groupId>
|
||||
<artifactId>native-osx-aarch64</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.aayushatharva.brotli4j</groupId>
|
||||
<artifactId>native-osx-x86_64</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.aayushatharva.brotli4j</groupId>
|
||||
<artifactId>native-linux-aarch64</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.aayushatharva.brotli4j</groupId>
|
||||
<artifactId>native-linux-x86_64</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.aayushatharva.brotli4j</groupId>
|
||||
<artifactId>native-windows-x86_64</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<!-- YAML config support -->
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-config-yaml</artifactId>
|
||||
</dependency>
|
||||
<!-- Vert.x mail client for SES SMTP relay -->
|
||||
<dependency>
|
||||
<groupId>io.vertx</groupId>
|
||||
<artifactId>vertx-mail-client</artifactId>
|
||||
</dependency>
|
||||
<!-- MIME parsing for raw email relay -->
|
||||
<dependency>
|
||||
<groupId>org.apache.james</groupId>
|
||||
<artifactId>apache-mime4j-dom</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Jackson for JSON storage serialization -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||||
<artifactId>jackson-dataformat-cbor</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
||||
<artifactId>jackson-dataformat-yaml</artifactId>
|
||||
</dependency>
|
||||
<!-- Filter expressions and recursive descent for Step Functions JSONPath evaluation. -->
|
||||
<dependency>
|
||||
<groupId>com.jayway.jsonpath</groupId>
|
||||
<artifactId>json-path</artifactId>
|
||||
<version>2.9.0</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Vert.x for per-container Lambda Runtime API servers -->
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-vertx</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.smallrye.reactive</groupId>
|
||||
<artifactId>smallrye-mutiny-vertx-web-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.vertx</groupId>
|
||||
<artifactId>vertx-mqtt</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- cron-utils for EventBridge schedule expression parsing -->
|
||||
<dependency>
|
||||
<groupId>com.cronutils</groupId>
|
||||
<artifactId>cron-utils</artifactId>
|
||||
<version>9.2.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Snappy for Firehose Snappy/HADOOP_SNAPPY delivery to S3: the only Java
|
||||
library that writes the xerial stream format AWS uses. -->
|
||||
<dependency>
|
||||
<groupId>org.xerial.snappy</groupId>
|
||||
<artifactId>snappy-java</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Docker client for Lambda container lifecycle management -->
|
||||
<dependency>
|
||||
<groupId>com.github.docker-java</groupId>
|
||||
<artifactId>docker-java-core</artifactId>
|
||||
<version>3.7.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.docker-java</groupId>
|
||||
<artifactId>docker-java-transport-httpclient5</artifactId>
|
||||
<version>3.7.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents.client5</groupId>
|
||||
<artifactId>httpclient5</artifactId>
|
||||
<!-- Held at 5.5.x: 5.6 adds commons-compress content decoding, and its XZ codec
|
||||
needs org.tukaani:xz at native link time (GraalVM link-at-build-time). -->
|
||||
<version>5.5.1</version>
|
||||
</dependency>
|
||||
<!-- Explicit overrides for Quarkus BOM which pins these at 3.7.0;
|
||||
docker-java-core:3.7.1 requires 3.7.1 for ImageHistoryCmd and ExportContainerCmd -->
|
||||
<dependency>
|
||||
<groupId>com.github.docker-java</groupId>
|
||||
<artifactId>docker-java-api</artifactId>
|
||||
<version>3.7.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.docker-java</groupId>
|
||||
<artifactId>docker-java-transport</artifactId>
|
||||
<version>3.7.1</version>
|
||||
</dependency>
|
||||
<!-- httpclient5 5.5.1 (pulled by docker-java-transport-httpclient5:3.7.1) optionally
|
||||
depends on Brotli; GraalVM native image requires the class to be on the classpath -->
|
||||
<dependency>
|
||||
<groupId>org.brotli</groupId>
|
||||
<artifactId>dec</artifactId>
|
||||
<version>0.1.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- BouncyCastle for X.509 certificate generation and PEM handling (ACM service) -->
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-security</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.bouncycastle</groupId>
|
||||
<artifactId>bcprov-jdk18on</artifactId>
|
||||
<version>1.85.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.bouncycastle</groupId>
|
||||
<artifactId>bcpkix-jdk18on</artifactId>
|
||||
<version>1.85</version>
|
||||
</dependency>
|
||||
|
||||
<!-- JSONata expression engine (Step Functions) -->
|
||||
<dependency>
|
||||
<groupId>com.dashjoin</groupId>
|
||||
<artifactId>jsonata</artifactId>
|
||||
<version>0.9.10</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Apache Velocity Template Engine (API Gateway VTL mapping templates) -->
|
||||
<dependency>
|
||||
<groupId>org.apache.velocity</groupId>
|
||||
<artifactId>velocity-engine-core</artifactId>
|
||||
<version>2.4.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- JSON Schema validation (API Gateway request validation) -->
|
||||
<dependency>
|
||||
<groupId>com.networknt</groupId>
|
||||
<artifactId>json-schema-validator</artifactId>
|
||||
<version>1.5.9</version>
|
||||
</dependency>
|
||||
|
||||
<!-- OpenAPI/Swagger parser (API Gateway ImportRestApi) -->
|
||||
<dependency>
|
||||
<groupId>io.swagger.parser.v3</groupId>
|
||||
<artifactId>swagger-parser</artifactId>
|
||||
<version>2.1.48</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Glue Schema Registry: Apicurio format utilities (parsing, canonicalization, compatibility) -->
|
||||
<dependency>
|
||||
<groupId>io.apicurio</groupId>
|
||||
<artifactId>apicurio-registry-schema-util-avro</artifactId>
|
||||
<version>${apicurio.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.apicurio</groupId>
|
||||
<artifactId>apicurio-registry-schema-util-json</artifactId>
|
||||
<version>${apicurio.version}</version>
|
||||
<exclusions>
|
||||
<!-- Apicurio's logging library brings a Servlet-based audit filter that
|
||||
fails to wire under Quarkus REST (Vert.x). Schema-util code does not
|
||||
reference it. -->
|
||||
<exclusion>
|
||||
<groupId>io.apicurio</groupId>
|
||||
<artifactId>apicurio-common-app-components-logging</artifactId>
|
||||
</exclusion>
|
||||
<!-- Apicurio asks for the JSON schema library under its JitPack coordinate
|
||||
(com.github.everit-org.json-schema), which has never been published to Maven
|
||||
Central. Resolving it needs a JitPack repository, so a clone with a cold
|
||||
~/.m2 fails to build. Replaced below with the same library under the
|
||||
coordinate its author publishes to Central. -->
|
||||
<exclusion>
|
||||
<groupId>com.github.everit-org.json-schema</groupId>
|
||||
<artifactId>org.everit.json.schema</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<!-- The same project as com.github.everit-org.json-schema, rehomed by its author to a
|
||||
Central-published coordinate: identical org.everit.json.schema packages, so apicurio's
|
||||
JsonSchemaCompatibilityChecker and JsonSchemaContentValidator load unchanged. -->
|
||||
<dependency>
|
||||
<groupId>com.github.erosb</groupId>
|
||||
<artifactId>everit-json-schema</artifactId>
|
||||
<version>${everit.json.schema.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.apicurio</groupId>
|
||||
<artifactId>apicurio-registry-schema-util-protobuf</artifactId>
|
||||
<version>${apicurio.version}</version>
|
||||
<exclusions>
|
||||
<!-- Glue schema-registry protobuf validation. Wire's schema parser drags in
|
||||
KotlinPoet, which exists to generate Kotlin source and pulls kotlin-reflect
|
||||
behind it. Floci only parses and canonicalizes .proto schemas. ICU4J comes
|
||||
along the same path and is only used by Wire's code generator too. -->
|
||||
<exclusion>
|
||||
<groupId>com.squareup</groupId>
|
||||
<artifactId>kotlinpoet-jvm</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.ibm.icu</groupId>
|
||||
<artifactId>icu4j</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<!-- Testing -->
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.quarkus</groupId>
|
||||
<artifactId>quarkus-junit-mockito</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>rest-assured</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.awaitility</groupId>
|
||||
<artifactId>awaitility</artifactId>
|
||||
<version>4.3.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.fabric8</groupId>
|
||||
<artifactId>kubernetes-server-mock</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- kubernetes-server-mock declares this as optional, so it must be pulled in
|
||||
explicitly for the kubernetes Lambda executor's tests, which use it as a fake
|
||||
API server (never shipped: KubernetesApiClient is a plain HTTP client, not a
|
||||
Kubernetes SDK, see issue #2914). -->
|
||||
<dependency>
|
||||
<groupId>io.fabric8</groupId>
|
||||
<artifactId>kubernetes-client</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.assertj</groupId>
|
||||
<artifactId>assertj-core</artifactId>
|
||||
<version>3.27.7</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.paho</groupId>
|
||||
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
|
||||
<version>1.2.5</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.paho</groupId>
|
||||
<artifactId>org.eclipse.paho.mqttv5.client</artifactId>
|
||||
<version>1.2.5</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.mysql</groupId>
|
||||
<artifactId>mysql-connector-j</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.graalvm.sdk</groupId>
|
||||
<artifactId>nativeimage</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<version>2.4.240</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- openCypher/Bolt client for the Neptune neo4j db-type integration test -->
|
||||
<dependency>
|
||||
<groupId>org.neo4j.driver</groupId>
|
||||
<artifactId>neo4j-java-driver</artifactId>
|
||||
<version>6.2.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>io.quarkus.platform</groupId>
|
||||
<artifactId>quarkus-maven-plugin</artifactId>
|
||||
<version>${quarkus.platform.version}</version>
|
||||
<extensions>true</extensions>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>generate-code</goal>
|
||||
<goal>generate-code-tests</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.16.0</version>
|
||||
<configuration>
|
||||
<release>${maven.compiler.release}</release>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.6.0</version>
|
||||
<configuration>
|
||||
<!-- The suite's end-of-run live set exceeds the 4g default heap of
|
||||
16g CI runners; a full GC near the end reclaims almost nothing. -->
|
||||
<argLine>-Xmx6g</argLine>
|
||||
<systemPropertyVariables>
|
||||
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
|
||||
</systemPropertyVariables>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-enforcer-plugin</artifactId>
|
||||
<version>3.6.3</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>enforce-java</id>
|
||||
<goals>
|
||||
<goal>enforce</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<rules>
|
||||
<requireJavaVersion>
|
||||
<version>[25,26)</version>
|
||||
<message>Floci requires JDK 25. Set JAVA_HOME to JDK 25.</message>
|
||||
</requireJavaVersion>
|
||||
</rules>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>native</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>native</name>
|
||||
</property>
|
||||
</activation>
|
||||
<properties>
|
||||
<skipITs>true</skipITs>
|
||||
<quarkus.native.enabled>true</quarkus.native.enabled>
|
||||
<maven.compiler.release>24</maven.compiler.release>
|
||||
</properties>
|
||||
</profile>
|
||||
</profiles>
|
||||
</project>
|
||||
Reference in New Issue
Block a user