Releases posted in 2020

2020 was quite the year to say the least. The news cycle was underwhelming all year round. I must confess there were days when it was quite difficult to concentrate and couldn’t get anything done. I count myself among the lucky ones that were able to work from home since day one and didn’t get sick though I can’t say the same for friends and family, some got sick (most recovered) but tragically a few dear friends left before their time. Despite all the ups and downs I managed to post some releases during the year, as a matter of Read More


Ikonli 12.0.0 Released!

I’m ecstatic to announce that Ikonli 12.0.0 is finally available for general consumption! Ikonli is the best way to add spice and character to JavaFX and Swing applications alike via configurable icons. Ikonli provides icon packs for popular icon sets such as FontAwesome, Material Design, Weather icons, and more. This release increases the number of icons packs from 31 to 55! That’s a lot of icons to choose from! There’s no need to hunt down icons on the web, it’s likely Ikonli provides just what you require. But in the case that wasn’t true Ikonli is extensible, allowing you to Read More


Maven: verify or clean install?

This is it. After months of tweeting memes about mvn clean install I decided to get some numbers to see how performance would be affected when switching from one command to the other. But first a bit of history. Like many developers when faced with building a Maven project the first reaction is to invoke mvn clean install, after all you find that instruction in almost every README or BUILD file, so why question it? It does not matter if the project is single or contains multiple modules, the instruction is the same. As a matter of fact when the Read More


Gradle POMs revisited

Close to two years ago I posted my thoughts on introducing a Maven-like structure for organizing and building Gradle projects. I dubbed those ramblings The Gradle POM and The Gradle SuperPOM. In truth the latter is a misnomer, instead it should had been “The Gradle Parent POM”. These posts served as an introduction to a new project I had been working on: the Kordamp Gradle Plugin suite. The original goal for this project was to bring order to chaos found in the dozens of Open Source projects I actively maintain. Before Kordamp began, all these projects relied on the tried Read More


Maven features I wish Gradle had: inlined plugins

Since the early days of Maven the development team recognized that they couldn’t (and shouldn’t) provide a solution for every problem we as consumers may face with our builds. In order to cater for our every whim and emerging requirements the Maven build tool added a pluggable mechanism to provide behavior as needed, and thus Maven plugins were born. Maven plugins are typically configured inside a <build> block found in the pom.xml file, which lets them contribute goals that may bind to lifecycle phases by default, or just providing goals that you can invoke at any time. But what if Read More


Gum 0.8.0 is out!

Whoa, 2 Gum releases in the same month? I’m having so much fun working with and on Gum that I just couldn’t resist posting another release. Last time I mentioned that Gum is capable of launching JBang with explicit and implicit targets; in the case of implicit a strict file order was to be followed: .java, .jsh, and .jar. Well no more, Gum 0.8.0 let’s you configure the resolution order as you deem necessary. The configuration may be per directory (project) or global. Which brings me to the second major feature added to this release, how do you know which Read More


Maven features I wish Gradle had: override task properties

It’s no secret that one of the most common properties ever set on a Maven build is -DskipTests which as the name implies, instructs Maven to skip running tests. As a matter of fact that property is read by the maven-surefire-plugin to figure out if it should run tests or not. As it turns out there’s a separate property named skip that instructs Maven to skip compiling and running tests. If you’re curious and peek at the documentation you may notice that the field/property names for skipTest match but for skip you’ll find a property named maven.test.skip. As it happens, Read More


Maven features I wish Gradle had: summary reports

For quite some time now, Maven users have grown accustomed to seeing a summary report when a build is run. The report appears at two locations: at the beginning of the build where Maven shows the projects that participate in the current session (or Reactor if you prefer) which gives you a clue of how many projects, their packaging selection (jar, pom, etc), and perhaps more importantly, in which order they will be processed. The second location is at the end of the build where each project display its status (SUCCESS, FAILURE, SKIPPED) plus the time it took to execute Read More


Gum 0.7.2 delivers more bang for your buck

A bang, like in JBang! That’s right, JBang is the new kid on the block in the Java command line tool space. Initially taking advantage of JEP-330 that enhances the Java launcher to support single source files, JBang builds on top of that idea and adds dependency resolution, JShell integration, launch executable JARs, launch scripts from trusted URLs, and a few other goodies. In other words, JBang is not constrained by JEP-330 (which requires Java 11) as it also let’s you run scripts with Java 8. Taking a hint from Gradle and Maven, JBang also adds a wrapper to help Read More


Gum 0.4.0 latest tricks

Gum 0.4.0 is out and it comes with a few goodies! If you’re like me you may see yourself switching between Maven and Gradle projects, a lot. This constant switching makes it very likely that I’ll mess up the command invocation and send Maven goals to a Gradle project, or send Gradle tasks to a Maven project. This results in a wasted JVM iteration as the command fails. But what if there was a way to make it work given certain mappings? What if Maven’s compile goal could be translated into Gradle’s classes or viceversa? What if these mappings were Read More


ˆ Back To Top