rades-annotations

Rades Annotationen zur Automatisierung

License

License

GroupId

GroupId

com.github.funthomas424242
ArtifactId

ArtifactId

rades-annotations
Last Version

Last Version

3.1.1
Release Date

Release Date

Type

Type

jar
Description

Description

rades-annotations
Rades Annotationen zur Automatisierung
Project URL

Project URL

https://github.com/FunThomas424242/rades-annotations
Project Organization

Project Organization

PIUG
Source Code Management

Source Code Management

https://github.com/FunThomas424242/rades-annotations

Download rades-annotations

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.funthomas424242/rades-annotations/ -->
<dependency>
    <groupId>com.github.funthomas424242</groupId>
    <artifactId>rades-annotations</artifactId>
    <version>3.1.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.funthomas424242/rades-annotations/
implementation 'com.github.funthomas424242:rades-annotations:3.1.1'
// https://jarcasting.com/artifacts/com.github.funthomas424242/rades-annotations/
implementation ("com.github.funthomas424242:rades-annotations:3.1.1")
'com.github.funthomas424242:rades-annotations:jar:3.1.1'
<dependency org="com.github.funthomas424242" name="rades-annotations" rev="3.1.1">
  <artifact name="rades-annotations" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.funthomas424242', module='rades-annotations', version='3.1.1')
)
libraryDependencies += "com.github.funthomas424242" % "rades-annotations" % "3.1.1"
[com.github.funthomas424242/rades-annotations "3.1.1"]

Dependencies

compile (2)

Group / Artifact Type Version
org.slf4j : slf4j-api jar 1.7.25
javax.validation : validation-api jar 2.0.1.Final

provided (1)

Group / Artifact Type Version
com.google.auto.service : auto-service Optional jar 1.0-rc4

test (6)

Group / Artifact Type Version
org.junit.jupiter : junit-jupiter-api jar 5.2.0
junit : junit jar 4.12
com.google.testing.compile : compile-testing jar 0.15
ch.qos.logback : logback-core jar 1.2.3
ch.qos.logback : logback-classic jar 1.2.3
org.apache.bval : bval-jsr jar 1.1.2

Project Modules

There are no modules declared in this project.

Maven Central download Build Status Codacy code quality badge Waffle.io - Columns and their card count

rades-annotations

Stellt im Rahmen von Rades Annotationen zur Automatisierung bereit. Die angebotenen Annotationen können zur Generierung folgender Pattern genutzt werden:

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

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.

Versions

Version
3.1.1
3.1.0
3.0.0
2.1.0
2.0.1