{"id":28680742,"url":"https://github.com/ZenWave360/zenwave-sdk","last_synced_at":"2025-06-14T02:03:47.248Z","repository":{"id":37430044,"uuid":"454544051","full_name":"ZenWave360/zenwave-sdk","owner":"ZenWave360","description":"DDD and API-First tools for Event-Driven microservices. Create Software Easy to Understand.","archived":false,"fork":false,"pushed_at":"2025-06-11T09:57:40.000Z","size":27960,"stargazers_count":48,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-11T10:55:24.167Z","etag":null,"topics":["api-first","asyncapi","code-generator","ddd","jdl","jhipster","openapi"],"latest_commit_sha":null,"homepage":"https://www.zenwave360.io","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZenWave360.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-01T20:41:00.000Z","updated_at":"2025-06-10T17:49:45.000Z","dependencies_parsed_at":"2023-10-12T18:59:58.337Z","dependency_job_id":"dbd3eac3-c4ea-4541-b245-1ea695931699","html_url":"https://github.com/ZenWave360/zenwave-sdk","commit_stats":null,"previous_names":[],"tags_count":110,"template":false,"template_full_name":null,"purl":"pkg:github/ZenWave360/zenwave-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenWave360%2Fzenwave-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenWave360%2Fzenwave-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenWave360%2Fzenwave-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenWave360%2Fzenwave-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZenWave360","download_url":"https://codeload.github.com/ZenWave360/zenwave-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenWave360%2Fzenwave-sdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259747197,"owners_count":22905308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-first","asyncapi","code-generator","ddd","jdl","jhipster","openapi"],"created_at":"2025-06-14T02:01:12.141Z","updated_at":"2025-06-14T02:03:47.242Z","avatar_url":"https://github.com/ZenWave360.png","language":"Java","funding_links":[],"categories":["开发框架"],"sub_categories":[],"readme":"# ZenWave SDK\n\n\u003cp align=\"center\"  markdown=\"1\"\u003e\n  \u003cimg src=\"docs/logos/code-generator-logo-dark.svg#gh-dark-mode-only\" alt=\"ZW\u003e Code Generator\" /\u003e\n  \u003cimg src=\"docs/logos/code-generator-logo-light.svg#gh-light-mode-only\" alt=\"ZW\u003e Code Generator\" /\u003e\n\u003c/p\u003e\n\n\u003e 👉 ZenWave360 Helps You Create Software Easy to Understand\n\n[![Maven Central](https://img.shields.io/maven-central/v/io.zenwave360.sdk/zenwave-sdk.svg?label=Maven%20Central\u0026logo=apachemaven)](https://search.maven.org/artifact/io.zenwave360.sdk/zenwave-sdk)\n![General Availability](https://img.shields.io/badge/lifecycle-GA-green)\n[![build](https://github.com/ZenWave360/zenwave-sdk/workflows/Build%20and%20Publish%20Maven%20Snapshots/badge.svg)](https://github.com/ZenWave360/zenwave-sdk/actions/workflows/publish-maven-snapshots.yml)\n[![coverage](https://raw.githubusercontent.com/ZenWave360/zenwave-sdk/badges/jacoco.svg)](https://github.com/ZenWave360/zenwave-sdk/actions/workflows/publish-maven-central.yml)\n[![branches coverage](https://raw.githubusercontent.com/ZenWave360/zenwave-sdk/badges/branches.svg)](https://github.com/ZenWave360/zenwave-sdk/actions/workflows/publish-maven-central.yml)\n[![GitHub](https://img.shields.io/github/license/ZenWave360/zenwave-sdk)](https://github.com/ZenWave360/zenwave-sdk/blob/main/LICENSE)\n\n\u003e **Note**: Starting with version 2.0.0, the Maven `groupId` has changed to `io.zenwave360`. The code remains fully compatible.\n\u003e You can find [Previous Releases Documentation](https://github.com/ZenWave360/zenwave-sdk/tree/1.7.x?tab=readme-ov-file#available-plugins) here.\n\nZenWave SDK is a configurable and extensible toolkit for **Domain Driven Design (DDD)** and **API-First** that can generate code from a mix of different models including:\n\n- ZDL Domain Language\n- AsyncAPI\n- OpenAPI\n\n**Table of Contents:**\n\n- [ZenWave SDK](#zenwave-sdk)\n  - [Jbang Instalation](#jbang-instalation)\n  - [Features / Roadmap](#features--roadmap)\n  - [Building from source](#building-from-source)\n  - [Usage](#usage)\n  - [Available Plugins](#available-plugins)\n- [ZenWave SDK Documentation](#zenwave-sdk-documentation)\n\n## JBang Instalation\n\nThe easiest way to install ZenWave SDK is as a [JBang alias](https://www.jbang.dev/documentation/guide/latest/alias_catalogs.html):\n\n```shell\njbang alias add --fresh --force --name=zw release@zenwave360/zenwave-sdk\n```\n\nor if you prefer to use the latest **snapshot** versions:\n\n```shell\njbang alias add --fresh --force --name=zw snapshots@zenwave360/zenwave-sdk\n```\n\nor if you prefer to use the _next_ experimental/unstable **snapshot** versions:\n\n```shell\njbang alias add --fresh --force --name=zw next@zenwave360/zenwave-sdk\n```\n\nIf you plan to use **custom plugins** you will need to use the command in the following format:\n\n```shell\njbang alias add --name=zw  --force \\\n    -m=io.zenwave360.sdk.Main \\\n    --repos=mavencentral,snapshots=https://s01.oss.sonatype.org/content/repositories/snapshots \\\n    --deps=\\\norg.slf4j:slf4j-simple:1.7.36,\\\nio.zenwave360.sdk.plugins:asyncapi-spring-cloud-streams3:1.7.1,\\\nio.zenwave360.sdk.plugins:asyncapi-jsonschema2pojo:1.7.1,\\\nio.zenwave360.sdk.plugins:openapi-spring-webtestclient:1.7.1,\\\nio.zenwave360.sdk.plugins:backend-application-default:1.7.1,\\\nio.zenwave360.sdk.plugins:zdl-to-openapi:1.7.1,\\\nio.zenwave360.sdk.plugins:zdl-to-asyncapi:1.7.1,\\\nio.zenwave360.sdk.plugins:jdl-to-asyncapi:1.7.1,\\\nio.zenwave360.sdk.plugins:zdl-to-markdown:1.7.1,\\\nio.zenwave360.sdk.plugins:openapi-controllers:1.7.1\n    io.zenwave360.sdk:zenwave-sdk-cli:1.7.1\n```\n\nYou can include any **custom plugin** jars in the `--deps` option.\n\nJBang will use you maven settings for repository resolution, but you can also specify a custom maven repository in the `--repos` option.\n\n## Features / Roadmap\n\n- [x] ZenWave SDK CLI\n  - [x] Default parsers, processors, plugins, templating, formatters, writers, etc... for AsyncAPI, OpenAPI and JDL.\n  - [x] Help command: detailed, json, markdown, list of available plugins\n  - [x] Fork existing (custom or standard) plugin command\n- [x] ZenWave SDK Maven Plugin\n- [x] Standard Plugins\n  - [x] JDL Backend Application (flexible hexagonal architecture)\n    - [x] Domain Entities\n    - [x] Inbound\n      - [x] Service Ports, DTOs, Mappers\n      - [x] Implementation for CRUD operations\n      - [x] Acceptance Tests: SpringData InMemory Repositories\n    - [x] Outbound: SpringData Repositories, ElasticSearch... (for REST or Async see other plugins)\n    - [x] Adapters:\n      - [x] Spring MVC\n      - [ ] ~~Spring WebFlux~~\n    - [ ] Flavors\n      - [x] MongoDB\n        - [x] Imperative\n        - [ ] ~~Reactive~~\n      - [x] JPA\n        - [x] Imperative\n        - [ ] ~~Reactive~~\n    - [x] Unit/Integration Testing\n      - [x] Edge Integration Testing: partial spring-boot context for outbound adapters (with testcontainers)\n      - [x] Sociable Vertical Testing: manual dependency setup with in memory infrastructure _test-doubles_\n      - [x] Vertical Integration Testing: full spring-boot context for inbound adapters (with testcontainers)\n  - [x] JDL OpenAPI Controllers\n  - [x] OpenAPI to Spring WebTestClient\n  - [x] AsyncAPI Spring Cloud Streams3\n    - [x] Consumer and Producer. Imperative and Reactive.\n      - [x] Business Exceptions Dead Letter Queues Routing\n    - [x] Producer with Transactional Outbox pattern\n      - [x] For MongoDB\n      - [x] For JDBC\n    - [x] Enterprise Envelop Pattern\n    - [x] Automatically fill headers at runtime from payload paths, tracing-id supplier...\n  - [x] JDL to Specs\n    - [x] JDL to OpenAPI\n    - [x] JDL to AsyncAPI\n      - [x] AsyncAPI schemas\n      - [x] AVRO schemas\n  - [x] API Testing\n    - [x] KarateDSL\n      - [x] OpenAPI to Karate E2E Tests (please use [KarateIDE VSCode Extension](https://github.com/ZenWave360/karate-ide) instead)\n      - [x] OpenAPI to Karate/ApiMock Stateful Mocks (please use [KarateIDE VSCode Extension](https://github.com/ZenWave360/karate-ide) and [ZenWave ApiMock](https://github.com/ZenWave360/zenwave-apimock) instead)\n    - [x] OpenAPI to Spring WebTestClient\n    - [x] OpenAPI to REST-assured\n    - [ ] ~~OpenAPI to Pact (_postponed sine die_)~~\n  - [x] Reverser Engineering\n    - [x] OpenAPI 2 JDL\n    - [x] Java 2 JDL\n      - [x] Spring Data MongoDB annotations\n      - [x] JPA annotations\n\n## Building from source\n\n```shell\ngit clone https://github.com/ZenWave360/zenwave-sdk.git\ncd zenwave-sdk\nmvn clean install\n```\n\n## Usage\n\nUse the following jbang format:\n\n```shell\njbang zw -p \u003cpluginConfigClass or short-code\u003e optionName=value optionName2=value\n```\n\nYou can get a list of all available plugins:\n\n```shell\n$ jbang zw -h list\n\nUsage: \u003cmain class\u003e [-f] [-h[=\u003chelpFormat\u003e]] [-p[=\u003cpluginClass\u003e]]\n                    [\u003cString=Object\u003e...]\n      [\u003cString=Object\u003e...]\n  -f, --force                Force overwrite\n  -h, --help[=\u003chelpFormat\u003e]  Help with output format\n  -p, --plugin[=\u003cpluginClass\u003e]\n                             Plugin Class or short-code\nINFO Reflections - Reflections took 566 ms to scan 59 urls, producing 2513 keys and 13329 values\nZW\u003e SDK (2.0.0)\n\nAvailable plugins:\n\nBackendApplicationDefaultPlugin:    Generates a full backend application using the provided 'layout' property (2.0.0)\nZDLToOpenAPIPlugin:                 Generates a draft OpenAPI definitions from your ZDL entities and services. (2.0.0)\nZDLToAsyncAPIPlugin:                Generates a draft AsyncAPI file with events from your ZDL services. (2.0.0)\nOpenAPIControllersPlugin:           Generates implementations based on ZDL models and OpenAPI definitions SpringMVC generated OpenAPI interfaces. (2.0.0)\nAsyncApiJsonSchema2PojoPlugin:      Generate Plain Old Java Objects from OpenAPI/AsyncAPI schemas or full JSON-Schema files. (2.0.0)\nSpringCloudStreams3Plugin:          Generates strongly typed SpringCloudStreams3 producer/consumer classes for AsyncAPI (2.0.0)\nSpringCloudStreams3AdaptersPlugin:  Generates Spring Cloud Streams Consumers from AsyncAPI definitions. (2.0.0)\nSpringWebTestClientPlugin:          Generates test for SpringMVC or Spring WebFlux using WebTestClient based on OpenAPI specification. (2.0.0)\nOpenAPIKaratePlugin:                Generates test for KarateDSL based on OpenAPI specification. (2.0.0)\nJDLToAsyncAPIPlugin:                Generates a full AsyncAPI definitions for CRUD operations from JDL models (2.0.0)\nZdlToJsonPlugin:                    Prints to StdOut ZDL Model as JSON (2.0.0)\nOpenAPIToJDLPlugin:                 Generates JDL model from OpenAPI schemas (2.0.0)\nZdlToMarkdownPlugin:                Generates Markdown glossary from Zdl Models (2.0.0)\n\n\nUse: \"jbang zw -p \u003cplugin | short-code\u003e -h\" to get help on a specific plugin\n```\n\nNOTE: it will list any available plugin, standard or custom, inside any of these root java packages \"io\", \"com\" or \"org\".\n\nAnd get help for a given plugin:\n\n```shell\njbang zw --help -p \u003cpluginConfigClass\u003e\n```\n\nYou can add choose a help format from the following: help, detailed, markdown, or list:\n\n```shell\njbang zw --help markdown -p \u003cpluginConfigClass\u003e\n```\n\n## Available Plugins\n\nRefer to individual plugin's documentation for more information:\n\n| **Plugin**                                                                               | **Description**                     | **Model Types**            |\n|------------------------------------------------------------------------------------------|-------------------------------------|----------------------------|\n| [Backend Application Default](./plugins/backend-application-default/README.md)           | Backend Application Default         | ZDL                        |\n| [AsyncAPI JSON Schema to POJO](./plugins/asyncapi-jsonschema2pojo/README.md)             | AsyncAPI JSON Schema to POJO        | AsyncAPI, JsonSchema       |\n| [AsyncAPI to Spring Cloud Streams 3](./plugins/asyncapi-spring-cloud-streams3/README.md) | AsyncAPI to Spring Cloud Streams 3  | AsyncAPI, AVRO, JsonSchema |\n| [OpenAPI Controllers](./plugins/openapi-controllers/README.md)                           | JDL OpenAPI Controllers             | OpenAPI, ZDL               |\n| [OpenAPI to Spring WebTestClient](./plugins/openapi-spring-webtestclient/README.md)      | OpenAPI to Spring WebTestClient     | OpenAPI                    |\n| [ZDL to OpenAPI](./plugins/zdl-to-openapi/README.md)                                     | ZDL to OpenAPI and OpenAPI to ZDL   | ZDL, OpenAPI               |\n| [ZDL to AsyncAPI](./plugins/zdl-to-asyncapi/README.md)                                   | ZDL to AsyncAPI                     | ZDL, AsyncAPI              |\n| [ZDL to Markdown](./plugins/zdl-to-markdown/README.md)                                   | ZDL to Markdown                     | ZDL                        |\n| [Java 2 JDL Reverse Engineering](./plugins/java-to-jdl/README.md)                        | Java 2 JDL Reverse Engineering      | Java, JDL                  |\n| [Java 2 AsyncAPI Reverse Engineering](./plugins/java-to-asyncapi/README.md)              | Java 2 AsyncAPI Reverse Engineering | Java                       |\n| [MCP Server](./plugins/zenwave-mcp-server/README.md)                                     | ZenWave MCP Server                  | ZDL                        |\n\n# ZenWave SDK Documentation\n\nPlease refer to the [documentation](https://zenwave360.github.io/zenwave-sdk/) website for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZenWave360%2Fzenwave-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FZenWave360%2Fzenwave-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZenWave360%2Fzenwave-sdk/lists"}