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 ofjavax.*
) - 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:
- citrus-remote has been moved to separate repository https://github.com/citrusframework/citrus-remote
- citrus-jdbc endpoint module has been moved to https://github.com/citrusframework/citrus-db
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!