mockserver-monorepo

mock-serverApache-2.0活跃维护

一个支持 HTTP/1.1、HTTP/2、gRPC、WebSocket、TCP 的 mock 服务器和代理,能模拟 API、检查修改实时流量并注入故障,适合联调和混沌测试。

MockServer is an HTTP(S) mock server and proxy for testing that lets you mock APIs, inspect and modify live traffic, and inject failures. It supports HTTP/1.1, HTTP/2, gRPC, WebSockets, TCP and more on a single port, with additional support for HTTP/3, message brokers, and AI/LLM APIs.

mockserver-9.2.0发布于 2026-10-27 00:11 UTC5,007star +1 / 7 天1,122fork同步于 2026-11-10 17:37 UTC

怎么上手

由 README 提炼,执行前请确认
docker run -d --rm -p 1080:1080 mockserver/mockserver
curl -X PUT http://localhost:1080/mockserver/expectation -H 'Content-Type: application/json' -d '{"httpRequest":{"method":"GET","path":"/hello"},"httpResponse":{"statusCode":200,"body":"Hello World"}}'
硬件要求按 README 说明

README 未说明 GPU 或显存要求;运行时需 Java 17+,官方 Docker 镜像自带 JVM,容器用户无需自装 JVM。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

单端口自动识别多协议的 HTTP(S) mock 与代理服务器,用于模拟 API、录制改写流量并注入故障

一个支持 HTTP/1.1、HTTP/2、gRPC、WebSocket、TCP 的 mock 服务器和代理,能模拟 API、检查修改实时流量并注入故障,适合联调和混沌测试。

核心能力

  • 单端口按首字节自动识别 HTTP/1.1、HTTP/2、gRPC、WebSocket 与 TCP
  • 可作正向代理或端口转发,录制、查看并改写 TLS 加密流量
  • 按需注入延迟、断连和错误,做混沌测试
  • 从 OpenAPI/Swagger 规范自动生成 mock 期望
  • 内置 MCP 服务,可 mock OpenAI、Anthropic 等 LLM 接口

容易踩的坑

6.0.0 起需 Java 17+,仍用 Java 11 要锁定 5.15.x;6.0.0 移除了 shaded classifier,需改用 mockserver-netty-no-dependencies;仅限开发测试使用,不要用于生产环境。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本mockserver-9.2.0
  1. mockserver-9.2.0MockServer 9.2.0最新正式版2026-10-27 · 2026-10-27 00:11 UTC

    [9.2.0] - 2026-10-26

    Security

    • In the mockserver-netty-no-dependencies jar and the Docker images, the bundled Kafka client used for AsyncAPI mocking now refuses the JndiLoginModule and LdapLoginModule JAAS login modules in a saslJaasConfig, as Kafka does by default since CVE-2023-25194. The jar renames the libraries it bundles, and the renaming changed the module names Kafka checks against, so the check never matched (#2869)
    • With dataPlaneAuthenticationRequired on, a mocked endpoint could still be reached without credentials in several ways. A path that only starts with /mockserver (such as /mockserverfoo), or a /mockserver/... path that the server does not handle (such as /mockserver/nope, or /mockserver/status and /ready over HTTP/3), skipped the check and was answered by any matching expectation, a catch-all one included. Over HTTP/1.1, an expectation with respondBeforeBody answered the first request on a connection without checking credentials. And a gRPC bidirectional-streaming expectation (respondWithGrpcBidi) answered over HTTP/2 or HTTP/3 without checking them. gRPC server reflection also answered without credentials, listing the loaded services and message types, and so did a gRPC chaos fault and the UNIMPLEMENTED answer for an unknown gRPC method, which told the caller which methods exist. All of these are now refused (401, or gRPC status UNAUTHENTICATED) like any other mocked endpoint. A refused request does not use up the expectation's Times, move its scenario on or count towards a gRPC chaos profile. The control plane, the readiness and liveness probes (the gRPC health check included), and CORS preflights for the control plane still work without data-plane credentials. Data-plane authentication does not apply to DNS mocking
    • dataPlaneAuthenticationRequired now applies to the WAR deployments (mockserver-war, mockserver-proxy-war) and to InProcessMockServer, which served their mocks without credentials whatever it said. Credentials are checked before a request can match an expectation, so a refused request uses up no Times and moves no scenario, and a CORS preflight for a control-plane route stays open, as on the standalone server. An in-process request carries its credentials in its headers. In a WAR, tlsMutualAuthenticationRequired is now enforced too: a mocked request over plain HTTP gets 426 Upgrade Required, and one over HTTPS without a client certificate verified by the servlet container gets 401; the container's trust store decides which certificates are accepted (see upgrading to 9).
    • The Kafka SASL JAAS configuration for AsyncAPI broker mocking can now only be set at startup, with the new asyncKafkaSaslJaasConfig property (-Dmockserver.asyncKafkaSaslJaasConfig or MOCKSERVER_ASYNC_KAFKA_SASL_JAAS_CONFIG). A JAAS configuration names the Java login class the Kafka client loads, and PUT /mockserver/asyncapi let any control-plane caller choose it through brokerConfig.kafkaSecurity.saslJaasConfig. That request is now rejected with a 400 that names the startup property, and so is any other field in kafkaSecurity that MockServer does not know, so no Kafka client setting that loads a class can be passed in; saslMechanism and securityProtocol must be one of Kafka's own values. A request that selects SASL_PLAINTEXT or SASL_SSL uses the startup JAAS configuration (or the JVM's own JAAS file). Because every SASL login is now held by the server, such a request may only use the startup asyncKafkaBootstrapServers: it must omit kafkaBootstrapServers or name the same brokers, or it gets a 400 and no credential is sent, and it gets a 400 while no startup bootstrap servers are set. asyncKafkaBootstrapServers can now only be set at startup: PUT /mockserver/configuration ignores it and lo
  2. mockserver-9.1.0MockServer 9.1.02026-10-21 · 2026-10-21 11:40 UTC
    查看更新说明

    [9.1.0] - 2026-10-21

    Security

    • Control-plane mTLS could be bypassed by sending the CA certificate after an untrusted client certificate. With controlPlaneTLSMutualAuthenticationRequired on, MockServer 5.13.0 to 9.0.0 accepted a control-plane request if any certificate the client sent could be validated against controlPlaneTLSMutualAuthenticationCAChain. A CA certificate is public, so anyone who could reach the control plane could send their own certificate followed by your CA certificate and create, read or delete expectations, change the configuration or reset the server, without the CA's private key. Also requiring data-plane mTLS (tlsMutualAuthenticationRequired) did not prevent this in the default set-up: the data-plane check also trusts MockServer's own CA, which by default is the CA bundled with MockServer, and its private key is published in the jar, so an attacker could sign their certificate with it. Data-plane mTLS prevented it only if MockServer had its own CA (certificateAuthorityCertificate and certificateAuthorityPrivateKey, or dynamicallyCreateCertificateAuthorityCertificate) and every CA in tlsMutualAuthenticationCertificateChain was private. MockServer now checks only the client's own certificate (the one whose private key it used for the connection): it must be signed by a CA in the chain, directly or through intermediate CA certificates the client sends after it, be in date, allow digital signatures if it lists key usages, allow client authentication if it lists extended key usages, and not be a CA certificate, a self-signed certificate or one of the certificates in the chain. A self-signed client certificate listed in controlPlaneTLSMutualAuthenticationCAChain is no longer accepted; sign client certificates with a CA instead. A controlPlaneTLSMutualAuthenticationCAChain that contains the bundled CA (or any certificate for its key) is now refused: MockServer does not start, PUT /mockserver/configuration answers 400, and any other change makes every control-plane request fail, where before only a warning was logged. If MockServerClient and MockServer share that property in one JVM (for example ClientAndServer or the JUnit rule) and you added the bundled CA so the client trusts MockServer's certificate, give MockServer its own CA with certificateAuthorityCertificate and certificateAuthorityPrivateKey and put that CA in the chain instead. The control-plane audit log now records the validated client certificate's subject as a verified principal (verified-mtls) unless OIDC supplied one; with mTLS and JWT both on, the audit principal is now the certificate subject instead of the unverified JWT sub. If a MockServer reachable by others had control-plane mTLS on, with or without data-plane mTLS, treat its expectations, recorded traffic and settings as possibly read or changed by someone else
    • mTLS (tlsMutualAuthenticationRequired) no longer accepts client certificates anyone can create (BREAKING for mTLS set-ups that use MockServer's default CA; see upgrading to 9). Up to 9.0.0, MockServer trusted client certificates signed by MockServer's own CA whenever mTLS was on, even with tlsMutualAuthenticationCertificateChain set. By default that CA is the one bundled with MockServer, and its private key is published in the MockServer jar, so anyone could create a client certificate, with any name, that MockServer accepted. That client also matched any client certificate condition in your expectations and, when control-plane authentication was off, could create, read or delete expectations. MockServer now never trusts the bundled CA for mTLS. If mTLS is on and nothing but the bundled CA would be trusted, or tlsMutualAuthenticationCertificateChain contains the bundled CA, MockServer does not start, PUT /mockserver/configuration answers 400, and the message names the fix: give MockServer
  3. mockserver-9.0.0MockServer 9.0.02026-10-15 · 2026-10-15 21:51 UTC
    查看更新说明

    [9.0.0] - 2026-10-15

    This release delivers a sustained performance and memory programme alongside data-integrity fixes under load, plus a large set of LLM-provider correctness fixes, dashboard improvements, and client-library parity work. Headline numbers from the single-load-generator benchmark on the same six-core rig (builds 420 and 464): the healthy ceiling rises from 39,033 to 57,149 req/s and the peak from 43,671 to 59,905 req/s, with p95 at 32,000 req/s falling from 56.6 ms to 0.44 ms on the new ZGC default in the Docker images; event-log retained heap at 20,000 entries falls from 429 MB to 61 MB; Docker image download shrinks ~23%; and instance shutdown drops from ~107 ms to near zero. 22 BREAKING changes affect HTTP/3, DNS mocking, binary (non-HTTP) proxying and binary expectation matching while proxying, template-failure response codes, maxLoggedMatchFailures's default, initialisation-file id conflicts, the Node client's TypeScript typings and exports map, LOG_ENTRIES log output, control-plane error handling and mTLS, the Rust client's enums, verification-failure wording, response statusCode validation, AsyncAPI and response/OpenAPI verification, GenAI trace span names, the Node client's recorded-request typings, and the Go client/Testcontainers module's /v9 module paths — see Upgrading from 8.0.0 and the BREAKING entries under Changed. For a per-change migration list, see the upgrade guide at https://www.mock-server.com/mock_server/upgrading_to_9.html.

    MetricBeforeAfter
    Throughput, healthy ceiling / peak (req/s, 6 cores)39,033 / 43,67157,149 / 59,905
    p95 latency at 32,000 / 48,000 req/s offered56.6 ms / 82.4 ms0.44 ms / 12.0 ms
    Event-log heap (20,000 entries)429 MB61 MB
    Docker image download (linux/arm64, standard image)~167 MB~129 MB
    Instance shutdown time~107 ms~0 ms

    "Before" is perf build 420 (commit d568695a2, 2026-09-24, JDK 17.0.20, G1 collector), measured nine days after the 8.0.0 tag and already carrying some of this release's own work, since 8.0.0 itself was never measured on this rig. "After" is perf build 464 (commit efdc5227b2, 2026-09-27, JDK 25, ZGC), the performance page's single-load-generator figures; the page's headline is now a different, multi-generator measurement (see Changed). Both are comparable with each other but not with any benchmark published after this release.

    Upgrading from 8.0.0
    • Go client and Go Testcontainers module users: both modules move to /v9 module paths (the Go module proxy refused their 8.0.0 tags) — run go get github.com/mock-server/mockserver-monorepo/mockserver-client-go/v9 (and the Testcontainers module's /v9 path if you use it) and change your imports from the /v7/unsuffixed paths to the /v9 ones; see Changed.
    • HTTP/3 users (http3Port set): the QUIC native library now ships separately — use the -jar-with-dependencies-http3 jar or the mockserver/mockserver:<version>-http3 Docker image (latest-http3, snapshot-http3; Helm: image.variant=http3), and a server that cannot serve HTTP/3 (missing native, or the port unusable) now refuses to start instead of silently falling back.
    • DNS mocking users (dnsEnabled=true): MockServer now refuses to start if its dnsPort cannot be bound, instead of logging a warning and running without DNS. Leave dnsPort at its default of 0 to let the OS pick a free port, or set dnsEnabled=false.
    • TypeScript users of mockserver-client/llm: the deep-import typings no longer declare a default export; import from mockserver-client itself, use import llm = require(...)/import * as llm from ..., or turn on esModuleInterop (see Changed).
    • Binary (non-HTTP) proxy users: a client connection now always keeps one upstream connection for its whole life — forwarding one message per upstream connection is removed, along with its `forwardBinaryRequestsWithoutWaitingForRespo
  4. mockserver-8.0.0MockServer 8.0.02026-09-15 · 2026-09-15 09:33 UTC
    查看更新说明

    [8.0.0] - 2026-09-15

    Added

    • Test port allocation can opt into a fixed port band instead of the OS ephemeral range. org.mockserver.socket.PortFactory normally finds a free port with bind(0), which draws from the same ephemeral range (on macOS net.inet.ip.portrange.hifirst..hilast, typically 49152-65535) that every other bind(0) on the machine uses — including unrelated applications, IDE helpers, and other JVMs. On a busy developer machine that causes two kinds of test flake: a foreign process can occupy a number a test is about to choose, and a test can momentarily connect to that foreign listener instead of the server under test. Setting both mockserver.testPortRangeStart and mockserver.testPortRangeEnd (for example -Dmockserver.testPortRangeStart=20000 -Dmockserver.testPortRangeEnd=40000) makes PortFactory choose ports by explicitly binding inside that band — which the OS does not itself hand out to bind(0) — retrying past any number already in use. Both properties are unset by default, so continuous integration and any machine that does not set them keep the exact bind(0) behaviour as before. This affects only test port selection; it does not change how MockServer binds its own ports at runtime (starting on port 0 and reading back the assigned port remains the fully race-free option and is unchanged). In a surefire/failsafe fork the two properties must reach the fork, e.g. via -Dmockserver.testArgLine="-Dmockserver.testPortRangeStart=20000 -Dmockserver.testPortRangeEnd=40000".

    Changed

    • HTTP/2 now gives every request stream its own channel. MockServer's HTTP/2 server — both h2 (over TLS) and cleartext h2c — now uses Netty's stream-multiplexing model for every connection, replacing the previous shared-connection HTTP/2 pipeline. Each HTTP/2 stream is processed on its own isolated child channel. This removes a class of cross-stream interference on busy connections: concurrent streaming responses (Server-Sent Events, NDJSON, AWS Bedrock event-stream, and therefore all streaming LLM responses) can no longer have a later chunk of one stream mis-routed onto another, and each stream's end-of-stream is delivered independently, so a slow or streaming response on one stream cannot stall another. This model was previously used only when grpcBidiStreamingEnabled was set; it is now the standard HTTP/2 pipeline and needs no configuration — so the HTTP/2 correctness fixes listed below apply to all HTTP/2 traffic, not only when that flag is enabled. There is no change to the REST/Java API, to how expectations are written, or to HTTP/1.1 and HTTP/3 traffic, and HTTP/2 clients receive the same responses. Users driving very large numbers of concurrent streams over a single connection may notice different memory and throughput characteristics, since each stream now has its own lightweight channel. (GitHub issue #2669).
    • Behaviour change — over HTTP/2, closeSocket now ends the stream, not the connection. A per-expectation ConnectionOptions.closeSocket / closeChannel (and the slowCloseDelay connection-lifecycle chaos) applied to an HTTP/2 request now closes only that request's stream; other requests in flight on the same connection continue and complete normally. Previously it tore down the whole TCP connection, killing every concurrent stream on it — so one expectation could destroy unrelated clients' in-flight requests. Ending a single stream is the correct HTTP/2 semantic and is what the same expectation already did over HTTP/1.1, where a connection carries one request at a time. If you rely on closeSocket to tear down an HTTP/2 connection — for example to test how your client recovers from a dropped connection — use the resetMidResponse connection-lifecycle chaos fault instead, which still aborts the whole TCP connection (that is its purpose, and it now does so properly rather than degrading into a single-st
  5. mockserver-7.6.0MockServer 7.6.02026-08-17 · 2026-08-17 17:10 UTC
    查看更新说明

    [7.6.0] - 2026-08-17

    Changed

    • The three Kubernetes container-integration cases that need Java-built images — helm_sidecar_injection (admission-webhook sidecar injection), helm_clustered_convergence, and helm_jgroups_dns_ping (both the -clustered Infinispan image) — now run blocking in CI instead of recording a skip. Previously the CI helm step ran with no JDK and never built those images, so all three recorded an honest but permanent SKIP — coverage that looked green while proving nothing. A new :maven: build container-test images (jars) step in the mockserver-container-tests pipeline builds the mockserver-netty, mockserver-k8s-webhook, and mockserver-state-infinispan jars from the tree (once, via the Maven-in-Docker reactor) and hands them to the helm step as Buildkite artifacts; the helm step downloads them and does cheap docker builds (a COPY into distroless) to produce the -clustered and mockserver-webhook images, then runs the suite. The jars travel as artifacts (~200 MB total) rather than docker saved images (~1.3 GB), mirroring the node-launcher / WAR hand-off. Both layers fail closed: the helm step exits non-zero if any jar artifact is absent, and the harness runs with REQUIRE_CLUSTERED_IMAGE=true/REQUIRE_WEBHOOK_IMAGE=true so an image that is expected-but-absent is recorded as a FAILURE, never a skip — a skip in CI is now impossible. Local container_integration_tests/integration_tests.sh is unchanged for a developer without the images: it still records a comprehensible SKIP (no fail-closed flag set), and the harness now also builds the mockserver-webhook image locally (build_webhook_docker) so the sidecar case runs blocking in local dev too — it was never built by the harness before, so that case had always skipped.

    Added

    • Two new rules in the always-on check-false-green-guards.sh CI gate. Rule 4 fails the build if a CI step runs the container-integration harness with the helm/k3d cases active but does not export both REQUIRE_CLUSTERED_IMAGE=true and REQUIRE_WEBHOOK_IMAGE=true — the exact way the three image-dependent Kubernetes cases could silently revert to a green SKIP. It is keyed on the step's behaviour (invokes integration_tests.sh without SKIP_HELM_TESTS=true), not on a filename, so a rename or a second helm-running step is covered automatically. Rule 5 fails the build if a mockserver-core test that performs a JVM-global logging side effect (reaching LogManager.readConfiguration's handler reset() via the static ConfigurationProperties logging setters or a forced fresh <clinit>) is not in the sequential-tests include list — the shape behind a release-blocking flake that ParallelStaticStateGuardTest structurally cannot catch. Both rules fail closed on an empty corpus and carry a rotating allow-list. See docs/operations/false-green-guards.md.
    • A jarPath launcher option and matching MOCKSERVER_JAR_PATH environment variable for mockserver-node, pointing start_mockserver at a pre-provisioned mockserver-netty jar-with-dependencies instead of downloading one from Maven Central. When set, that exact jar is launched and no download is attempted; a configured-but-missing path is a hard error (... refusing to fall back to downloading a release) rather than a silent fall-back to a released jar, so a missing artifact fails loudly. Mirrors the existing MOCKSERVER_BINARY_BASE_URL bring-your-own-artifact path for the standalone binary, and serves air-gapped/corporate installs as well as testing a locally-built jar (jarPath takes precedence over mockServerVersion/artifactory*; the option beats the env var). The Node launcher integration tests now use it in CI: a new :maven: build node launcher jar step builds the jar from the tree and the launcher-test step downloads it as an artifact and launche

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    MockServer            Build status GitHub license GitHub stars Artifact Hub MCP Toplist

    MockServer mocks, records, and chaos-tests any HTTP(S) dependency your application talks to — one binary, no per-protocol setup.

    Why MockServer

    • One port, every protocol — HTTP/1.1, HTTPS, HTTP/2, gRPC & gRPC-Web, WebSockets and raw TCP are auto-detected from the first bytes of each connection. Beyond that: HTTP/3 (QUIC, experimental), JSON-RPC for MCP/A2A mocking, and AsyncAPI-driven testing against Kafka/MQTT brokers.
    • Mock, proxy, or both — return canned/templated/callback responses, or sit as a proxy (port forwarding, HTTP proxy, HTTPS tunneling, SOCKS) and record, inspect, and modify real traffic in flight, with full visibility into TLS-encrypted exchanges.
    • Chaos engineering built in — inject latency, dropped connections, and errors on demand to see how your application copes when a dependency misbehaves.
    • Mock AI too — chat-completion APIs for OpenAI, Anthropic, Gemini, Bedrock, Azure OpenAI and Ollama (including streaming), plus a built-in MCP server so AI coding assistants can drive MockServer directly.
    • Generate mocks, don't hand-write them — from an OpenAPI/Swagger spec, with request matching on method, path, query, headers, cookies, and body (JSON, XML, JSONPath, XPath, regex).
    • Fits your stack — Java, JavaScript/Node, Python, Ruby, Go, .NET, Rust, and PHP clients, plus JUnit and Spring support; runs as Docker, Helm/Kubernetes, a JAR, or a WAR, with a live dashboard and optional clustered state for multi-instance deployments.

    See the changelog for what shipped in each version.

    Getting started in 60 seconds

    Run MockServer with Docker, then mock an endpoint and call it:

    # 1. Start MockServer
    docker run -d --rm -p 1080:1080 mockserver/mockserver
    
    # 2. Mock an endpoint: GET /hello -> 200 "Hello World"
    #    (MockServer exposes a REST control plane on the same port)
    curl -X PUT http://localhost:1080/mockserver/expectation \
      -H 'Content-Type: application/json' \
      -d '{
            "httpRequest":  { "method": "GET", "path": "/hello" },
            "httpResponse": { "statusCode": 200, "body": "Hello World" }
          }'
    
    # 3. Call your mock
    curl http://localhost:1080/hello
    # -> Hello World
    

    …or, on macOS / Linux, install with Homebrew and run the mockserver command directly:

    brew install mockserver
    mockserver run --port 1080
    

    For every way to run MockServer — Docker, docker-compose recipes, the mockserver CLI, a JVM-less binary bundle, Helm/Kubernetes, the JAR, and Testcontainers — see the Self-Hosting MockServer guide. The same setup can be driven from any client library or the dashboard at http://localhost:1080/mockserver/dashboard.

    One-command recipes

    The examples/docker-compose recipes are a single docker compose up each — mock from an OpenAPI spec, a record/replay proxy, a contract-validating proxy, or a chaos proxy:

    cd examples/docker-compose/mock-from-openapi
    docker compose up
    curl http://localhost:1080/pets
    

    Drive it from Postman or Bruno

    Run in Postman

    Install

    ChannelCommand
    Dockerdocker run -d --rm -p 1080:1080 mockserver/mockserver
    Docker from GitHub Container Registry (avoids Docker Hub's pull limit)docker run -d --rm -p 1080:1080 ghcr.io/mock-server/mockserver
    Homebrew (macOS/Linux)brew install mockserver
    Helm (chart guide)helm upgrade --install --namespace mockserver mockserver oci://ghcr.io/mock-server/charts/mockserver
    Maven Central mockserverorg.mock-server:mockserver-netty-no-dependencies — see all Maven artifacts (server, WARs, JUnit 4/5, Spring, Maven plugin)
    npmmockserver-node (start/stop)

    Client libraries (create expectations, verify requests, drive the control plane from your tests):

    Java Node PyPI Gem Go Packagist NuGet Crates.io

    Full install options (SNAPSHOT repository, WAR deployment, Testcontainers modules, package-manager channels) are on the Self-Hosting guide and Where to find MockServer.

    Requirements

    Runtime: Java 17+ (raised from Java 11 in MockServer 6.0.0 — see the Java 17 / Jakarta upgrade guide; pin to 5.15.x if you need Java 11). The official Docker image bundles its own JVM, so containerised users need no JVM of their own.

    Building from source: JDK 17+.

    Security note: MockServer is a development and testing tool only — see SECURITY.md.

    Documentation

    Versions

    Latest release

    • What changed: changelog and GitHub releases (every version is also a git tag mockserver-<version>).
    • API docs for a version: Java API at https://mock-server.com/versions/<version>/apidocs/index.html; REST API on SwaggerHub (one spec per major.minor.x).
    • Java 11: the last Java 11-compatible release is 5.15.0 (January 2023).

    6.0.0 breaking change: the <classifier>shaded</classifier> Maven form was removed. Replace mockserver-netty:<version>:shaded with mockserver-netty-no-dependencies:<version> (same shaded bytes, new coordinates).

    Community & Contributing

    Maintainers