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

Announcing the PomChecker project

I’m happy to announce the immediate availability of the PomChecker suite! What is it you ask? It’s a small set of utilities to verify that a POM or BOM file complies with the minimum requirements for being uploaded to Maven Central. I wish an utility like this existed years ago when I started publishing artifacts to Maven Central. It took me a few tries in the beginning to get the POM files just right. Recently I’ve seen other developers struggling with these rules as well. Hopefully these utilities can help them and others get on the road much faster. There Read More

Detecting duplicate dependencies in Maven

In late March 2020 I ran a quiz on Maven Dependency Resolution which turned out to be an eye opener for some people (including myself!). You can read the whole questionnaire, results, and analysis here. One of the surprising results was found in the very first question, a rather innocuous one but it resulted in a major stumbling block for 2/3 of respondents! Here’s the question What’s surprising is that only 36% people chose the correct answer and a similar percentage chose the “Build error” option because clearly duplicate dependencies ought to cause a build error, right? Wrong! Maven does Read More

Announcing the Gradle Enforcer Plugin

Inspired by the popular Maven Enforcer plugin I’m happy to announce that its Gradle counterpart has been released, say hello to the enforcer-gradle-plugin! The behavior provided by Gradle Enforcer plugin is very similar to what the Maven Enforcer plugin provides, in the sense that rules will be executed during a particular phase of the build; any rule violations result in a build failure. Rules are typically setup to check for preconditions and requirements. The Maven Enforcer plugin provides a set of core rules and extra rules. In turn, the Gradle Enforcer plugin provides a similar set plus a few rules Read More

More JavaFX Related Announcements

Following up on the recent news of JavaFX 11 and Java 11 being released, I’d like to announce that the following JavaFX related projects have been released as well: Project Version Link JDK 8 JDK 9 JDK 10 JDK 11 HarmonicFX 0.2.0 Y P P P BootstrapFX 0.2.4 Y Y Y Y DesktopPaneFX 0.12.0 Y Y Y Y JSilhouette 0.3.0 Y Y Y Y Ikonli 2.4.0 Y N N N Ikonli 11.0.0 N N N Y Y: Fully supported. N: No support at all. P: Partial support; some classes may not work due to 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

Running Griffon Applications with JavaFX 11

JavaFX 11 has just been released! You can get the latest release and find more documentation about it at Java 11 is just around the corner too. In order to prepare yourself for what’s coming here are the first details on modifying your Maven and Gradle builds to compile and run your Griffon project. Maven Make sure to have the latest Maven version installed. The current version is 3.5.4. Edit the pom.xml file and add a couple of additional properties <plugin.compiler.version>3.8.0</plugin.compiler.version> <javafx.version>11</javafx.version> Add the following dependencies to the <dependencies> block <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-base</artifactId> <version>${javafx.version}</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-graphics</artifactId> <version>${javafx.version}</version> Read More

DesktopPaneFX 0.11.0 Released

Version 0.11.0 has just been released! You can download it directly from Bintray’s JCenter and/or Maven Central. This version delivers the following changes: Bulk window operations added to DekstopPane and InternalWindow. A richer set of InternalWindowEvent values. Ability to register explicit InternalWindowEvent event handlers on InternalWindow. Bulk operations include the following ones: minimizeAllWindows minimizeOtherWindows maximizeAllWindows maximizeVisibleWindows restoreMinimizedWindows restoreVisibleWindows closeAllWindows closeOtherWindows tileAllWindows tileVisibleWindows tileHorizontally tileVertically These operations are available as direct method calls on DesktopPane. All of them except for the tiling ones are also available when popping a contextual menu on the title bar of an InternalWindow. Events triggered by Read More

ˆ Back To Top