rades-annotations
Stellt im Rahmen von Rades Annotationen zur Automatisierung bereit. Die angebotenen Annotationen können zur Generierung folgender Pattern genutzt werden:
Hier finden Sie die Projektdokumentation, das Nutzerhandbuch.
Noch ein Lombok?
Ja dieses Projekt erscheint wie eine Kopie von Lombok, dennoch erhebt es weder den Anspruch so umfangreich zu sein noch will es mit lombok in Konkurrenz treten. Auch wird eine andere Technologie zur Umsetzung verwendet. Lombok modifiziert den AST (abstract syntax tree - abstrakten Syntaxbaum) des Java Compilers. Im Gegensatz dazu wird das vorliegende Projekt rein auf der Basis von Annotationsprozessoren realisiert, unter möglichst geringer Verwendung von Reflection (Ganz bin ich leider nicht dran vorbei gekommen.).
Dieses Projekt besitzt nur ganz wenige Lösungen (aktuell Erstellung von Builder und Accessor einer Domainklasse). Wer mehr Funktionalität benötigt dem möchte ich tatsächlich die Nutzung von Lombok empfehlen.
Generell besteht auf Grund der im vorliegenden Projekt gewählten Technologie die Einschränkung, dass nur neue Artifakte (z.B. Klassen) generiert werden können. Es besteht für Annotationsprozessoren leider keine saubere Möglichkeit bestehenden Kode zu modifizieren. Daher entfallen auch Builder in Form von inneren Klassen. Wer so etwas sucht, sollte Lombok nutzen. Dort können solche Anpassungen mit der verwendeten Technologie realisiert werden.
Quellen im Internet
-
Artikel: http://www.baeldung.com/java-annotation-processing-builder
-
Artikel: https://www.visma.com/blog/java-annotation-processing-tool-tips-writing-testing/
-
Reference Projek: https://github.com/tommy-bo/junit-ignore-processor
-
Artikel: https://blog.oio.de/2019/02/18/bessere-builder-in-java-mit-manifold-self-type/#comment-75745
Danksagung
Dieses Projekt wäre ohne die Dienste, welche Open-Source-Projekte großzügig unterstützen, nicht möglich gewesen:
-
GitHub, welches kostenfrei ermöglicht in der Cloud gemeinsam am Code zu arbeiten und das Beitragen zu Open Source Projekten vereinfacht.
-
Travis CI welches kostenfrei cloudbasierte Build-Services bereitstellt, die sich einfach in GitHub integrieren lassen.
-
Codacy welches kostenfrei die Programmquellen von Open Source Projekten auf Einhaltung von Programmierregeln untersucht.
-
Codev welches kostenfrei die erreichte Codecoverage der Testfälle ermittelt.
-
Waffle.io welches für die agile Abarbeitung von Bugs und Features genutzt wird.
-
JFrog welches für die Bereitstellung von Bintray, der Distributionsplattform, die verwendet wird, um mögliche Downloads anzubieten. Bintray war wirklich von unschätzbarem Wert, da es nicht nur kostenloses Hosting und Traffic für die Software bietet, sondern es auch sehr einfach macht, ein Repository für benutzerdefinierte Binärformate einzurichten und die Metadaten der Downloads zu verwalten. Dank der einfach zu verwendenden REST-API ist es möglich einen automatisierten Workflow mit GitHub und Travis CI einzurichten, um die Software in kürzester Zeit zu erstellen, hochzuladen und zu katalogisieren.