Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wvlet/airframe
Essential Building Blocks for Scala
https://github.com/wvlet/airframe
airframe airspec command-line-parser config dependency-injection grpc guice jmx json logger metrics msgpack rpc scala scalajs serialization sql testing-framework
Last synced: about 2 months ago
JSON representation
Essential Building Blocks for Scala
- Host: GitHub
- URL: https://github.com/wvlet/airframe
- Owner: wvlet
- License: apache-2.0
- Created: 2016-08-14T07:00:12.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2024-10-23T20:25:46.000Z (3 months ago)
- Last Synced: 2024-10-24T08:05:16.046Z (3 months ago)
- Topics: airframe, airspec, command-line-parser, config, dependency-injection, grpc, guice, jmx, json, logger, metrics, msgpack, rpc, scala, scalajs, serialization, sql, testing-framework
- Language: Scala
- Homepage: https://wvlet.org/airframe
- Size: 153 MB
- Stars: 632
- Watchers: 19
- Forks: 66
- Open Issues: 100
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Gitter Chat][gitter-badge]][gitter-link] [![CI Status][gha-badge]][gha-link] [![codecov](https://codecov.io/gh/wvlet/airframe/branch/main/graph/badge.svg)](https://codecov.io/gh/wvlet/airframe) [![scala-index][sindex-badge]][sindex-link] [![maven central][central-badge]][central-link] [![Scala.js](https://www.scala-js.org/assets/badges/scalajs-1.0.0.svg)](https://www.scala-js.org)
[circleci-badge]: https://circleci.com/gh/wvlet/airframe.svg?style=svg
[circleci-link]: https://circleci.com/gh/wvlet/airframe
[gha-badge]: https://github.com/wvlet/airframe/workflows/CI/badge.svg
[gha-link]: https://github.com/wvlet/airframe/actions?workflow=CI
[gitter-badge]: https://badges.gitter.im/Join%20Chat.svg
[gitter-link]: https://gitter.im/wvlet/airframe?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
[coverall-badge]: https://coveralls.io/repos/github/wvlet/airframe/badge.svg?branch=main
[coverall-link]: https://coveralls.io/github/wvlet/airframe?branch=main
[sindex-badge]: https://index.scala-lang.org/wvlet/airframe/airframe/latest.svg?color=orange
[sindex-link]: https://index.scala-lang.org/wvlet/airframe
[central-badge]: https://img.shields.io/maven-central/v/org.wvlet.airframe/airframe_2.12.svg?label=maven%20central
[central-link]: https://search.maven.org/search?q=g:%22org.wvlet.airframe%22%20AND%20a:%22airframe_2.12%22Airframe https://wvlet.org/airframe is essential building blocks for developing applications in Scala, including logging, object serialization using JSON or MessagePack, dependency injection, http server/client with RPC support, functional testing with AirSpec, etc.
## Resources
- [Airframe Home](https://wvlet.org/airframe/)
- [Documentation](https://wvlet.org/airframe/docs)
- [Release Notes](https://wvlet.org/airframe/docs/release-notes.html)### Framework
- [Airframe DI: A Dependency Injection Library Tailored to Scala](https://wvlet.org/airframe/docs/airframe-di.html)
- [AirSpec: A Functional Testing Library](https://wvlet.org/airframe/docs/airspec.html)- [Airframe RPC: A Framework for Using Scala Both for Frontend and Backend Programming](https://wvlet.org/airframe/docs/airframe-rpc.html)
- [Airframe Modules](https://wvlet.org/airframe/docs/index.html)
## For Developers
Airframe uses Scala 3 as the default Scala version. To use Scala 2.x versions, run `++ 2.12` or `++ 2.13` in the sbt console.
### Releasing
For every PR, [release-drafter](https://github.com/release-drafter/release-drafter) will automatically label PRs using the rules defined in [.github/release-drafter.yml](https://github.com/wvlet/airframe/blob/main/.github/release-drafter.yml).
To publish a new version, first, create a new release tag as follows:
```sh
$ git switch main
$ git pull
$ ruby ./scripts/release.rb
```
This step will update docs/release-noteds.md, push a new git tag to the GitHub, and
create a new [GitHub relese note](https://github.com/wvlet/airframe/releases).
After that, the artifacts will be published to Sonatype (a.k.a. Maven Central). It usually takes 10-30 minutes.Note: Do not create a new tag from GitHub release pages, because it will not trigger the GitHub Actions for the release.
### Binary Compatibility
When changing some interfaces, binary compatibility should be checked so as not to break applications using older versions of Airframe. In build.sbt, set AIRFRAME_BINARY_COMPAT_VERSION to the previous version of Airframe as a comparison target. Then run `sbt mimaReportBinaryIssues` to check the binary compatibility.
## LICENSE
[Apache v2](https://github.com/wvlet/airframe/blob/main/LICENSE)
## Contributors
Many thanks to everyone who has contributed to our progress:
[![Contributors](https://contrib.rocks/image?repo=wvlet/airframe)](https://github.com/wvlet/airframe/graphs/contributors)