readme.adoc

June 21, 2022 · View on GitHub

= jMolecules -- Technology integrations

This repository contains a variety of integrations of jMolecules abstractions into different technologies.

== Supported technologies

  • link:jmolecules-archunit[jmolecules-archunit] -- ArchUnit rules that verify the aggregate structures in your model.
  • link:jmolecules-bytebuddy[jmolecules-bytebuddy] -- A ByteBuddy plugin to translate jMolecules patterns implemented in jmolecules-ddd into different technologies. See the link:https://github.com/xmolecules/jmolecules-examples/tree/main/jmolecules-spring-data-jpa[example] for details. ** Spring -- translates jMolecules annotations like @Service etc. into the Spring equivalents so that the annotated classes can be used out of the box with Spring. ** JPA -- translates jmolecules-ddd annotations and interfaces into default mapping annotations and boilerplate code required by JPA.
  • link:jmolecules-spring[jmolecules-spring] -- Runtime library to make concepts from jmolecules-ddd work with Spring out of the box. ** Converter implementations that convert primitives (String, UUID) into Identifier implementations if they expose a static factory method of(…) and back into their inner value by calling the corresponding getter. ** Spring Boot auto-configuration to transparently register those converters in Spring MVC applications. ** AssociationResolver<T> to be used with Spring Data repositories to easily resolve Association instances.
  • link:jmolecules-jackson[jmolecules-jackson] -- Runtime library to make concepts from jmolecules-ddd work with Jackson out of the box. ** A Jackson module to tweak the serialization of single attribute @ValueObject and Identifier instances to (de)serializes (from) as their wrapped instances. ** Spring Boot auto-configuration to transparently register the module with Jackson in Spring Boot applications.

== Developer information

=== Release instructions

  • mvn release:prepare \ -DreleaseVersion="$version" \ -DdevelopmentVersion="$versionNext" \ -DscmReleaseCommitComment="$ticketId - Release version $version." \ -DscmDevelopmentCommitComment="$ticketId - Prepare next development iteration." \ -Dtag="$version"
  • mvn release:perform