Developer

Aktuelle Themen

Code Coverage Reports mit Maven in Multi-Modul-Projekten

JaCoCo ist ein sehr nützliches Tool für die Messung der Code Coverage, also der Abdeckung von Produktivcode durch automatisierte Tests, sowie zur Erstellung von Code Coverage Reports. An sich ist das Einbinden des JaCoCo-Maven-Plugins nicht schwierig. Hat man allerdings in einem Maven-Projekt mehrere Module, ist die Konfiguration nicht mehr ganz so trivial. Denn standardmäßig werden Coverage-Reports nur für die einzelnen Module generiert. Um einen aggregierten Report über alle Module hinweg zu erhalten, der die Gesamttestabdeckung des Projekts zeigt, und dabei außerdem zwischen Unit- und Integrations-Tests unterscheiden soll, ist schon etwas mehr Aufwand nötig. Leider gibt es kaum funktionierende Beispiele im Internet. Zudem ist die Dokumentation etwas dürftig, so dass man schon mal eine ganze Weile beschäftigt sein kann bis alles wie gewünscht funktioniert.

Daher haben wir ein funktionsfähiges Beispielprojekt mit drei Modulen erstellt, das als Vorlage für Projekte dienen kann.

Mehr

DBeaver – Ein universeller SQL Client für Datenbanken

Bislang habe ich für die Administration von relationalen Datenbanken das jeweils empfohlene Standardwerkzeug verwendet, was aber oftmals kein Spaß war. An der Stelle erwähne ich nur den Oracle SQL Developer oder pgAdmin 3/4. Das kann doch eigentlich nicht der Ernst der etablierten Datenbankhersteller sein…
Ich jedenfalls bin mit diesen Werkzeugen nie wirklich gut zurechtgekommen. Vor allem störte mich, dass jedes Werkzeug ein unterschiedliches Verhalten sowie eigene Tastaturkürzel mit sich brachte. Also musste hierfür etwas anderes her: DBeaver!Mehr

Mapping von Exceptions in Spring Boot

Oftmals müssen unchecked Exceptions aus dem Service-Layer einer Applikation in z.B. entsprechende HTTP-Fehlercodes konvertiert werden. Spring Boot bietet hierfür eine elegante Möglichkeit über die Annotation @ExceptionHandler an.

Beispiel

Es sollen alle ConstraintViolation-Fehler im Zusammenhang mit der Bean Validation API automatisch in 400er HTTP-Responses gemappt werden.

Hierzu erstellt man einfach einen neuen ControllerAdvice mit einer ExceptionHandler-Methode, die das Mapping beschreibt:

Möchte man noch weitere Exceptions mappen, kann man dies einfach durch Hinzufügen weiterer ExceptionHandler-Methoden in der ExceptionMapper-Klasse erreichen.

 

 

Unable to process Jar entry [module-info.class] from Jar

After updating the JAX-WS libraries of my current project to version 2.3.0, I got an error message in the log file when starting up Tomcat:

We’re using Tomcat 8.5, running with Java 8.

The presence of the file module-info.class within the jar file points out to the fact that version 2.3.0 of JAX-WS is ready to be used with Java 9. With the module info, a module of the Java Platform Module System declares other modules on which it depends, as well as the packages it wants to expose to other modules.

When analyzing the jar file I found that, while the Java classes have been compiled with Java 7, the module-info.class was (unsurprisingly) compiled with Java 9.  No wonder that a ClassFormatException occurs when running the application with Java 8.

So what to do with the exception?

  • Just ignore it, since it does no harm
  • Disable JarScanner
  • Run Tomcat with Java 9