The community is proud to announce the availability of the 1st release milestone towards Citrus 4 (4.0.0-M1). The need for a new major release of Citrus is mainly driven by the industry migrating from javax to jakarta APIs. Citrus is keen to keep up with popular runtimes such as Spring Boot and Quarkus. The proper alignment with those runtimes and the evolving of Java’s ecosystem in general is a key driver for Citrus 4.0.

The next major release of Citrus uses Java 17 and aligns with major dependency version updates such as Spring 6.0, Jakarta EE and Apache Camel 4.0.

Java 17

Citrus 4 is compiled with Java 17 (was Java 11 for Citrus 3.x). This means the minimum version to run Citrus 4 is also Java 17. Of course this also means that you are able to use the full greatness of evolving Java features such as records, multiline text blocks and so many more.

New groupId org.citrusframework

Citrus is an Open Source project and promotes the idea of open code and community contributions. The company ConSol Software GmbH and its employees have been a driving force in creating and maintaining Citrus since the very beginning of the project. Still ConSol plays a significant role in the success of Citrus by adapting and promoting the project in so many ways. However, the list of new contributors emerges and Citrus benefits from many community contributions these days.

For the sake of strengthening the Open Source idea we decided to move the Citrus groupId from com.consol.citrus to a more generic org.citrusframework from Citrus 4.0 onwards.

In case you update from earlier Citrus versions to Citrus 4.0 this means you need to adjust this groupId when referencing Citrus modules in Maven or Gradle.

<dependency>
    <groupId>org.citrusframework</groupId>
    <artifactId>citrus-bom</artifactId>
    <version>4.0.0-M1</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

As the groupId also represents the basic Java package used in Citrus you will likely also have to adjust your tests written on top of Citrus when doing an update. Please do not worry as it should be nothing more than a search-and-replace operation in your project codebase on this Java base package wherever it may be referenced.

Major version updates and Jakarta EE

Essential dependencies have been updated to the latest major versions. This includes the updates to Spring 6.0, Jakarta EE and Apache Camel 4.0

The list of major dependency updates:

  • Spring 6.0.6
  • Spring WS 4.0.2
  • Spring Integration 6.0.3
  • Spring Restdocs 3.0.0
  • Jetty 11.0.14
  • HttpClient 5.2.1
  • Apache Camel 4.0.0-M2
  • Use Active MQ Artemis 2.28.0
  • Use GreenMail 2.0.0 instead of SubethaSmtp
  • Switch to Jakarta EE (jakarta.* instead of javax.*)
  • Jakarta JMS API 3.1.0
  • Jakarta Validation 3.0.2
  • Jakarta Websocket API 2.1.0
  • Jakarta Servlet API 6.0.0
  • Saaj 3.0.0
  • JaxB 4.0.2
  • Kafka 3.4.0
  • SLF4J 2.0.6
  • Mockito 5.2.0
  • Snakeyaml 2.0

Removed old vintage modules

Since the last major Citrus 3.x release some modules have been marked as deprecated. These modules are end of life and will not be released as part of Citrus 4.0 and onwards.

This includes the modules:

  • citrus-java-dsl
  • citrus-arquillian

Moved experimental modules

Some modules have been moved out of the Citrus project into new separate code repositories. This is mainly because these modules do have experimental status and updating to Jakarta EE and Java 17 has not been possible at the moment.

The modules are:

The code and functionality of those modules stays the same. Also, the code has already received updates on the major releases such as Spring 6.0.

It is up to the community though to decide about the future maintenance and release cadence of these modules as those will not be released automatically with Citrus anymore.

Refactoring

Deprecated APIs and classes that coexisted a long time are now removed. If your project is using on of these deprecated classes you may run into compile time errors. Please have a look at the Citrus API JavaDocs and documentation in order to find out how to use the new APIs and classes that replaced the old deprecated stuff.

Provide feedback

Please adapt to using Citrus 4.0.0-M1 as soon as possible and give us feedback what is working and what may need more attention. We would love to hear from you how you like Citrus 4!