Revisiting Publication to Maven Central with Apache Maven

Some weeks ago I posted an entry on Publishing to Maven Central with Apache Maven which shows the configuration I put in place on a handful of Open Source projects I maintain. The trigger that starts a release workflow is a commit message with “[release]” as a prefix. I was quite happy with the results, after all I’ve got the whole release pipeline working on automatic, however two things were nagging me. Firstly that a release workflow would always require a commit. What if I just wanted to publish a release on the go? Add up pushing a release from Read More


PomChecker 1.1.0 has been released!

I’m happy to announce the immediate availability of the PomChecker suite version 1.1.0! PomChecker is a small utility that can verify if a POM or BOM file complies with the minimum requirements for being uploaded to Maven Central. I wrote this utility to reduce the chance of getting an error when uploading artifacts to Maven Central due to invalid or missing information in a given POM. There are no changes in behavior compared to version 1.0.0 however there are now three more options at your disposal for checking the validity of a POM file. The new options include: Running as Read More


Publishing to Maven Central using Apache Maven

Last week JFrog announced changes to its Bintray & JCenter services which will eventually lead to these services being discontinued by February 2022. I’ve been a happy Bintray user since the early days. Their services make uploading archives and having them available to the public a snap. Syncing those artifacts from JCenter to Maven Central can also be automated, simplifying the full release process. Previously I blogged about the options available to Gradle projects for publishing to Maven Central via Bintray. I’m saddened by the recent news of Bintray riding into the sunset, I’ll miss it dearly. And like many Read More


Building a layered modular Java application? Watch out for these!

Recently I’ve been experimenting with building layered modular Java applications with Layrry, a launcher and Java API for executing modularized Java applications. It so happens that version 1.0.0.Alpha1 was just released a couple of weeks ago, making it easier for anyone to give it a try. The base concept of Layrry is to organize your code in such a way that modules are grouped in a series of layers, enabling isolation between said layers as there’s a single classloader per layer, thus allowing conflicting modules (such as binary incompatibilities between classes) to be used within the same application. Module layers Read More


Layrry 1.0.0.Alpha1 has been released!

A brand new day brings a brand new release: I’m ecstatic to announce that Layrry 1.0.0.Alpha1 has been released! You can find all artifacts at Maven Central, Bintray, download them from Layrry’s releases page, or build it yourself by cloning https://github.com/moditect/layrry.git and following the build instructions found in the README, basically mvn install (yup, install is needed in this case, you can skip the clean). What’s more, you can also install Layrry directly from SDKMAN! as it’s now available as a candidate. šŸ¤©šŸ˜±šŸ˜šŸ„³ #Layrry at @sdkman_ pic.twitter.com/Kgu1BrsCaO — Andres Almiray (@aalmiray) January 30, 2021 What’s all the fuzz about Layrry 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


Running Java code from the source

Java 11 comes with a bunch changes and features (17 as listed here) one of which is JEP 330 which grants the ability of running a program from source without a separate compilation session; in other words you can now compile and run code in one go. JEP 330 describes the rules that must be followed to make use of this feature such as: A single source file ought to be provided as argument, additional files are ignored. The code must not have external dependencies other than java.base module. The code is compiled under the unnamed module. Program arguments may Read More


Ikonli 11.0.0 Released

Celebrating the recent release of JavaFX 11 and the upcoming release of Java 11 (any moment now!) I’d like to announce that Ikonli 11.0.0 is out! Judging by its number you can tell that this release synchronizes with both JavaFX 11 and Java 11. This release provides 30 icon packs (the same number as 2.4.0) but it requires Java 11 as a minimum. All artifacts have been fully modularized and take advantage of JPMS. You can configure and run your application on the module path or in the classpath, either way Ikonli will resolve your favorite icons. If running on Read More


DesktopPaneFX 0.9.0 released!

Version 0.9.0 of DesktopPaneFX has just been released! You can download it directly from Bintray’s JCenter and/or Maven Central. This version delivers the following changes: The title bar has been moved out from InternalWindow into its own component: TitleBar. This is a breaking change as some properties and methods have been migrated to the new class. InternalWindow can only be dragged from its title bar. Previous versions allowed dragging from anywhere within the window. InternalWindow now exposes a resizable property. There’s also a new incubating feature that made the cut: the ability to detach and attach windows to a DesktopPane. Read More


Creating aggregate JavaFX bindings

The standard JavaFX API provides a class named Bindings that can be used to create all kinds of bindings your application may need. Methods in this class can be used to translate any Observable, ObservableValue, Binding, Expression, and/or Property into another Binding, regardless of their original type. Here’s for example how you could translate a StringProperty into an IntegerBinding, by exposing the length of the contained String: StringBinding sourceBinding = … // initialized elsewhere IntegerBinding lengthBinding = Bindings.createIntegerBinding( () -> sourceBinding.get().length(), sourceBinding); While quick and to the point we’re forced to read the value directly from the inputs (in this Read More


ˆ Back To Top