03 June 2015

Griffon 2.3.0 Release Notes


The following dependencies have been upgraded

  • org.codehaus.groovy:groovy-all:2.4.3

  • org.slf4j:slf4j-api:1.7.12

  • com.google.inject:guice:4.0



TestFX is the chosen library for testing JavaFX UIs. There are two modes of operation: integration and functional. The difference strives in that integration allows mocking and bindings to be overridden (like in unit mode) and the application instances is created for every single test; in functional mode no mocking should be used and no bindings can be overridden, also the application instance is created once per testcase.

Resources and Messages

It’s now possible to define an empty value for a resource or a message key. This is important to configure buttons and menus that should have icons but no text.

Builder Updates

Threading methods, such as runInsideUISync are now available as explicit methods on builder instances. This enables easier migration from Griffon 1.x where these methods were also available to View scripts. The JavaFX builder supports the construction of comboBox nodes using an action as an argument, same way as buttons and menus.


AST Transformations

JavaFX support adds two new AST transformations: @ChangeListener and @InvalidationListener. They enable the registration of ChangeListener and InvalidationListener on JavaFX properties, much in the same way as @PropertyListener works with PropertyChangeListener and PropertyChangeEvent.

FXML Templates

The griffon-javafx-java template can now generate FXML files when a view artifact is selected.


  • Usage of CallableWithArgs in events has been deprecated in favor of RunnableWithArgs.

  • The WindowShown and WindowHidden events will send 2 arguments now: the name of the window and the window reference.

  • The injector API no longer requires a nested injector.

Full binary compatibility report between Griffon 2.3.0 and 2.2.0 can be found here.

A list of fixed issues can be found at the 2.3.0 milestone page.