Friday, March 10, 2017

How-To write and document a Maven Plugin


"Maven is - at its heart - a plugin execution framework; all work is done by plugins."

This quote is the start of the Maven Plugins documentation. Thus, if you want to customize your Maven build project you should think about using a special plugin. If no plugin for your task is available you have the possibility to write your own.

Tuesday, March 7, 2017

Java 9 - Multi-Release Jar Example

Java 9 offers the possibility to build a JAR file with a format that "allows multiple, Java-release-specific versions of class files to coexist in a single archive" (JEP 238: Multi-Release JAR Files).

Content of my Multi-Release Jar example artifact


I build a sample project to show how Multi-Release Jars can be build with Maven. You can find it here on my GitHub page.

Sunday, February 26, 2017

First Steps With Degraph

A crucial part of implementing software components is to get your code free from unwanted package dependencies. But most of the time it is hard to get an overview of which code depends on each other. SonarQube is a great tool but unfortunately they dropped the Package Tangle Index analysis support (see 'Also worth noting' here). JDepend is another tool but I could not really get familiar with it (even not with the eclipse IDE integration). Thus I decided to try Degraph - a newer tool that I heard of some time ago.

Sunday, February 12, 2017

Camunda BPM User Task with Timer Boundary Event to react on follow-up / due dates

User tasks (in general) often work with follow-up or due dates. Camunda BPM does support this by providing corresponding properties / members on the User Task BPMN. The Camunda API allows to filter user tasks by these dates so that due or overdue tasks can be found easily.

Beside the query filter also Timer Boundary Events on user tasks can be used to "detect" the maturity of a user task and to trigger an automatic action.

I implemented a working example to show the usage of timer boundary events on user tasks. You can find it at this GitHub location.

Have fun!