JReleaser 1.3.1 has been released!

JReleaser v1.3.1 has just been released! This is quick fix release given a pair of issues found with deployment to Maven Central, recently releases in v1.3.0. We decided to cut a quick release now instead of waiting for the next stable release (1.4.0) by the end of December 2022. The full list of issues can be found at the v1.3.1 milestone. Maven Central Deployment to Maven Central is performed by the Nexus2 deployer. Operations that modify the state of a remote staged repository (close, drop, release) may take some time depending on the size of the repository. JReleaser v1.3.1 adds Read More


JReleaser 1.3.0 has been released!

JReleaser v1.3.0 has just been released! This release delivers a feature that has been requested since the first news of JReleaser came to light: posting releases (JARs & POMs) to Maven Central. Yes! We finally have it! The full list of issues can be found at the v1.3.0 milestone. This release includes contributions made at Basel & Luzern Hackergartens as well as Hacktoberfest. Here’s a quick rundown of the new features: Deploy There’s a new deploy phase available in the workflow. This phase is responsible for uploading artifacts to locations that follow a particular layout. This new phase supports Maven Read More


A POM by any other name

By POM I mean Apache Maven’s Project Object Model. The POM format is widely used not just by Apache Maven to build and consume projects, but also by other tools such as IDEs, build tools, code analyzers, etc. Understanding the capabilities exposed by this format are key to successful builds, developer productivity, supply chain management (and security as well), and other concerns. What follows is a list of different types of POMs you may encounter in the wild. This list is not exhaustive, feel free to comment on other patterns you may find. To begin with, a pom.xml file is Read More


Crafting rolling releases for a Quarkus CLI application

I’ve been working on a tool called JReleaser for sometime now. JReleaser shortens the distance between your binaries and potential consumers by packaging and publishing said binaries using formats and tools that consumers enjoy, such as Homebrew, Scoop, Docker, etc. All kind of Java (and since v0.5.0 also non-Java) applications are supported, this being said CLI applications are ideal. There are many ways to build CLI applications with Java, it so happens that Quarkus is one of them. I’ve been looking for an excuse to setup a Quarkus project to try out JReleaser with it, little did I know that Read More


JReleaser says hello!

I’m beyond ecstatic to announce that JReleaser has finally posted its first release! JReleaser 0.1.0 is readily available, you can find more about this tool at https://jreleaser.org. So what is JReleaser? In just once sentence: the quick and effortless way to release your Java project! For 2 decades we have relied on Maven Central as the de facto place for publishing JARs. However, options for publishing binary distributions (such as Zip and Tar) abound, often times tied with specific platforms such as Homebrew for Mac, Snapcraft for Linux, and Scoop for Windows, among others. JReleaser’s goal is to lower the Read More


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


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


ˆ Back To Top