diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java
deleted file mode 100644
index b901097f2..000000000
--- a/.mvn/wrapper/MavenWrapperDownloader.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2007-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import java.net.*;
-import java.io.*;
-import java.nio.channels.*;
-import java.util.Properties;
-
-public class MavenWrapperDownloader {
-
- private static final String WRAPPER_VERSION = "0.5.6";
- /**
- * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
- */
- private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
- + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
-
- /**
- * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
- * use instead of the default one.
- */
- private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
- ".mvn/wrapper/maven-wrapper.properties";
-
- /**
- * Path where the maven-wrapper.jar will be saved to.
- */
- private static final String MAVEN_WRAPPER_JAR_PATH =
- ".mvn/wrapper/maven-wrapper.jar";
-
- /**
- * Name of the property which should be used to override the default download url for the wrapper.
- */
- private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
-
- public static void main(String args[]) {
- System.out.println("- Downloader started");
- File baseDirectory = new File(args[0]);
- System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
-
- // If the maven-wrapper.properties exists, read it and check if it contains a custom
- // wrapperUrl parameter.
- File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
- String url = DEFAULT_DOWNLOAD_URL;
- if(mavenWrapperPropertyFile.exists()) {
- FileInputStream mavenWrapperPropertyFileInputStream = null;
- try {
- mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
- Properties mavenWrapperProperties = new Properties();
- mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
- url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
- } catch (IOException e) {
- System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
- } finally {
- try {
- if(mavenWrapperPropertyFileInputStream != null) {
- mavenWrapperPropertyFileInputStream.close();
- }
- } catch (IOException e) {
- // Ignore ...
- }
- }
- }
- System.out.println("- Downloading from: " + url);
-
- File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
- if(!outputFile.getParentFile().exists()) {
- if(!outputFile.getParentFile().mkdirs()) {
- System.out.println(
- "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
- }
- }
- System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
- try {
- downloadFileFromURL(url, outputFile);
- System.out.println("Done");
- System.exit(0);
- } catch (Throwable e) {
- System.out.println("- Error downloading");
- e.printStackTrace();
- System.exit(1);
- }
- }
-
- private static void downloadFileFromURL(String urlString, File destination) throws Exception {
- if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
- String username = System.getenv("MVNW_USERNAME");
- char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
- Authenticator.setDefault(new Authenticator() {
- @Override
- protected PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(username, password);
- }
- });
- }
- URL website = new URL(urlString);
- ReadableByteChannel rbc;
- rbc = Channels.newChannel(website.openStream());
- FileOutputStream fos = new FileOutputStream(destination);
- fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
- fos.close();
- rbc.close();
- }
-
-}
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index 642d572ce..216df0589 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1,2 +1,3 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
+wrapperVersion=3.3.4
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip
diff --git a/amqp/pom.xml b/amqp/pom.xml
index 4d9eb9324..84ac3257f 100644
--- a/amqp/pom.xml
+++ b/amqp/pom.xml
@@ -13,13 +13,12 @@
CloudEvents - Proton AMQP Bindingjar
-
- 0.34.1
- 3.0.2
- io.cloudevents.amqp.proton
-
+
+ 0.34.1
+ io.cloudevents.amqp.proton
+
-
+ org.apache.qpidproton-j
@@ -43,6 +42,7 @@
org.junit.jupiterjunit-jupiter${junit-jupiter.version}
+ testio.cloudevents
diff --git a/api/pom.xml b/api/pom.xml
index a1d3f47e7..4dda910ac 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -39,7 +39,7 @@
com.google.code.findbugsjsr305
- 3.0.2
+ ${jsr305.version}providedtrue
diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml
index db7f759ec..5be845fb6 100644
--- a/benchmarks/pom.xml
+++ b/benchmarks/pom.xml
@@ -83,7 +83,7 @@
org.apache.maven.pluginsmaven-compiler-plugin
- 3.8.0
+ 3.15.0${javac.target}${javac.target}
@@ -93,7 +93,7 @@
org.apache.maven.pluginsmaven-shade-plugin
- 3.2.1
+ 3.6.2package
@@ -133,15 +133,15 @@
maven-clean-plugin
- 2.5
+ 3.5.0maven-deploy-plugin
- 2.8.1
+ 3.1.4maven-install-plugin
- 3.1.3
+ 3.1.4maven-jar-plugin
@@ -149,7 +149,7 @@
maven-javadoc-plugin
- 2.9.1
+ 3.12.0maven-resources-plugin
@@ -157,11 +157,11 @@
maven-site-plugin
- 3.3
+ 3.21.0maven-source-plugin
- 3.3.0
+ 3.4.0maven-surefire-plugin
diff --git a/core/pom.xml b/core/pom.xml
index f56b7f796..cfb5be9d4 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -43,7 +43,7 @@
com.google.code.findbugsjsr305
- 3.0.2
+ ${jsr305.version}providedtrue
@@ -69,7 +69,6 @@
org.apache.maven.pluginsmaven-jar-plugin
- 3.5.0
diff --git a/docs/amqp-proton.md b/docs/amqp-proton.md
index 951d61460..5a77d127b 100644
--- a/docs/amqp-proton.md
+++ b/docs/amqp-proton.md
@@ -9,9 +9,9 @@ nav_order: 5
This module implements `MessageReader` and `MessageWriter` using the Qpid Proton
library. It can be used with Qpid Proton or any integrations based on Qpid
-Proton (e.g vertx-proton).
+Proton (e.g. vertx-proton).
-For Maven based projects, use the following to configure the `proton` AMQP
+For Maven-based projects, use the following to configure the `proton` AMQP
binding for CloudEvents:
```xml
diff --git a/docs/api.md b/docs/api.md
index ff268be6a..eb0feabc1 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -10,7 +10,7 @@ nav_order: 2
This module contains the interfaces to represent `CloudEvent` in memory and to
read and write an object using as CloudEvent.
-For Maven based projects, use the following dependency:
+For Maven-based projects, use the following dependency:
```xml
@@ -47,8 +47,8 @@ binary mode containing a valid CloudEvent can be translated to a
CloudEvent, hence an eventual response builder could implement
`CloudEventWriter`.
-`CloudEventReader` and `CloudEventWriter` implementations doesn't have any
-particular knowledge about specification version, difference between attributes
+`CloudEventReader` and `CloudEventWriter` implementations do not have any
+particular knowledge about a specification version, difference between attributes
and extensions, and so on. Their only concern is how to read and write context
attributes and data back and forth to the "CloudEvents type system", as defined
in the package `io.cloudevents`.
diff --git a/docs/avro.md b/docs/avro.md
index 6a38b9c77..59785b415 100644
--- a/docs/avro.md
+++ b/docs/avro.md
@@ -10,7 +10,7 @@ nav_order: 4
This module provides the Avro Compact `EventFormat` implementation.
# Setup
-For Maven based projects, use the following dependency:
+For Maven-based projects, use the following dependency:
```xml
diff --git a/docs/core.md b/docs/core.md
index ff6e71492..e5a21fd3e 100644
--- a/docs/core.md
+++ b/docs/core.md
@@ -10,7 +10,7 @@ nav_order: 3
This package includes implementations and utilities to create and process
`CloudEvent` and interfaces to deal with Protocol Bindings and Event Formats.
-For Maven based projects, use the following dependency:
+For Maven-based projects, use the following dependency:
```xml
diff --git a/docs/http-jakarta-restful-ws.md b/docs/http-jakarta-restful-ws.md
index 5b71d447f..5ee23312e 100644
--- a/docs/http-jakarta-restful-ws.md
+++ b/docs/http-jakarta-restful-ws.md
@@ -10,7 +10,7 @@ Please migrate to Jakarta EE 9+ and use the `cloudevents-http-restful-ws-jakarta
[](http://www.javadoc.io/doc/io.cloudevents/cloudevents-http-restful-ws)
-For Maven based projects, use the following to configure the CloudEvents Jakarta
+For Maven-based projects, use the following to configure the CloudEvents Jakarta
RESTful Web Services Binding for Jakarta EE 8:
```xml
diff --git a/docs/http-vertx.md b/docs/http-vertx.md
index 456701ae9..4ee51e167 100644
--- a/docs/http-vertx.md
+++ b/docs/http-vertx.md
@@ -7,7 +7,7 @@ nav_order: 5
[](http://www.javadoc.io/doc/io.cloudevents/cloudevents-http-vertx)
-For Maven based projects, use the following to configure the CloudEvents Vertx
+For Maven-based projects, use the following to configure the CloudEvents Vertx
HTTP Transport:
```xml
@@ -58,7 +58,7 @@ public class CloudEventServerVerticle extends AbstractVerticle {
## Sending CloudEvents
-Below is a sample on how to use the client to send and receive a CloudEvent:
+Below is a sample of how to use the client to send and receive a CloudEvent:
```java
import io.cloudevents.CloudEvent;
diff --git a/docs/json-jackson.md b/docs/json-jackson.md
index 608ac7e98..59f4b5d32 100644
--- a/docs/json-jackson.md
+++ b/docs/json-jackson.md
@@ -3,7 +3,7 @@ title: CloudEvents Json Jackson
nav_order: 4
---
-# CloudEvents Json Jackson
+# CloudEvents JSON Jackson
[](http://www.javadoc.io/doc/io.cloudevents/cloudevents-json-jackson)
diff --git a/docs/kafka.md b/docs/kafka.md
index cd25125f5..bc1c7f97d 100644
--- a/docs/kafka.md
+++ b/docs/kafka.md
@@ -9,11 +9,10 @@ nav_order: 5
Implementation of Kafka Protocol Binding to send and receive CloudEvents.
-For Maven based projects, use the following to configure the
+For Maven-based projects, use the following to configure the
[Kafka Protocol Binding](https://github.com/cloudevents/spec/blob/main/kafka-protocol-binding.md):
```xml
-
io.cloudeventscloudevents-kafka
diff --git a/docs/protobuf.md b/docs/protobuf.md
index 68b318da3..9abbca6e9 100644
--- a/docs/protobuf.md
+++ b/docs/protobuf.md
@@ -12,7 +12,7 @@ Protobuf runtime and classes generated from the CloudEvents
[proto spec](https://github.com/cloudevents/spec/blob/v1.0.1/spec.proto).
# Setup
-For Maven based projects, use the following dependency:
+For Maven-based projects, use the following dependency:
```xml
diff --git a/docs/spring.md b/docs/spring.md
index 8a465d471..93f27e450 100644
--- a/docs/spring.md
+++ b/docs/spring.md
@@ -7,13 +7,11 @@ nav_order: 5
[](http://www.javadoc.io/doc/io.cloudevents/cloudevents-spring)
-This module provides the integration of `CloudEvent` with different Spring APIs,
-like MVC, WebFlux, RSocket and Messaging
+This module provides the integration of `CloudEvent` with different Spring APIs, like MVC, WebFlux, RSocket and Messaging.
-For Maven based projects, use the following dependency:
+For Maven-based projects, use the following dependency:
```xml
-
io.cloudeventscloudevents-spring
@@ -25,18 +23,11 @@ plus whatever you need to support your use case (e.g. `spring-boot-starter-webfl
## Introduction
-This module provides classes and interfaces that can be used by
-[Spring frameworks](https://spring.io/) and integrations to assist with Cloud
-Event processing.
+This module provides classes and interfaces that can be used by [Spring frameworks](https://spring.io/) and integrations to assist with Cloud Event processing.
-Given that Spring defines
-[Message](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/messaging/Message.html)
-abstraction, which perfectly maps to the structure defined by Cloud Events
-specification, one may say Cloud Events are already supported by any Spring
-framework that relies on `Message`. So this modules provides several utilities
-and interfaces to simplify working with Cloud Events in the context of Spring
-frameworks and integrations (see individual component's javadocs for more
-details).
+Given that Spring defines [Message](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/messaging/Message.html)
+abstraction, which perfectly maps to the structure defined by Cloud Events specification, one may say Cloud Events are already supported by any Spring framework that relies on `Message`.
+So this module provides several utilities and interfaces to simplify working with Cloud Events in the context of Spring frameworks and integrations (see individual component's javadocs for more details).
## Examples
@@ -56,7 +47,8 @@ public static class CloudEventHandlerConfiguration implements WebMvcConfigurer {
}
```
-With this in place you can write a `@RestController` with `CloudEvent` inputs or outputs, and the conversion will be handled by Spring. Example "echo" endpoint:
+With this in place you can write a `@RestController` with `CloudEvent` inputs or outputs, and the conversion will be handled by Spring.
+Example "echo" endpoint:
```java
@PostMapping("/echo")
@@ -70,7 +62,9 @@ public CloudEvent ce(@RequestBody CloudEvent event) {
}
```
-Both structured and binary events are supported. So if you know that the `CloudEvent` is in binary mode and the data can be converted to a `Foo`, then you can also use the `CloudEventHttpUtils` to deal with HTTP headers and stick to POJOs in the handler method. Example:
+Both structured and binary events are supported.
+So if you know that the `CloudEvent` is in binary mode and the data can be converted to a `Foo`, then you can also use the `CloudEventHttpUtils` to deal with HTTP headers and stick to POJOs in the handler method.
+Example:
```java
@PostMapping("/echo")
@@ -87,7 +81,8 @@ public ResponseEntity echo(@RequestBody Foo foo, @RequestHeader HttpHeaders
### Spring Webflux
-If you are using Spring Webflux instead of Spring MVC you can use the same patterns, but the configuration is different. In this case we have a pair of readers and writers that you can register with the `CodecCustomizer`:
+If you are using Spring Webflux instead of Spring MVC you can use the same patterns, but the configuration is different.
+In this case we have a pair of readers and writers that you can register with the `CodecCustomizer`:
```java
@Configuration
@@ -102,7 +97,8 @@ public static class CloudEventHandlerConfiguration implements CodecCustomizer {
}
```
-Then you can write similar code to the MVC example above, but with reactive signatures. Example echo endpoint:
+Then you can write similar code to the MVC example above but with reactive signatures.
+Example echo endpoint:
```java
@PostMapping("/event")
@@ -115,7 +111,8 @@ public Mono event(@RequestBody Mono body) {
}
```
-The `CodecCustomizer` also works on the client side, so you can use it anywhere that you use a `WebClient` (including in an MVC application). Here's a simple example of a Cloud Event HTTP client:
+The `CodecCustomizer` also works on the client side, so you can use it anywhere that you use a `WebClient` (including in an MVC application).
+Here's a simple example of a Cloud Event HTTP client:
```java
WebClient client = ...; // Either WebClient.create() or @Autowired a WebClient.Builder
@@ -129,7 +126,11 @@ Mono response = client.post()
### Messaging
-Spring Messaging is applicable in a wide range of use cases including WebSockets, JMS, Apache Kafka, RabbitMQ and others. It is also a core part of the Spring Cloud Function and Spring Cloud Stream libraries, so those are natural tools to use to build applications that use Cloud Events. The core abstraction in Spring is the `Message` which carries headers and a payload, just like a `CloudEvent`. Since the mapping is quite direct it makes sense to have a set of converters for Spring applications, so you can consume and produce `CloudEvents`, by treating them as `Messages`. This project provides a converter that you can register in a Spring Messaging application:
+Spring Messaging is applicable in a wide range of use cases including WebSockets, JMS, Apache Kafka, RabbitMQ and others.
+It is also a core part of the Spring Cloud Function and Spring Cloud Stream libraries, so those are natural tools to use to build applications that use Cloud Events.
+The core abstraction in Spring is the `Message` which carries headers and a payload, just like a `CloudEvent`.
+Since the mapping is quite direct, it makes sense to have a set of converters for Spring applications, so you can consume and produce `CloudEvents`, by treating them as `Messages`.
+This project provides a converter that you can register in a Spring Messaging application:
```java
@Configuration
@@ -159,7 +160,10 @@ public Function events() {
### Generic Encoder and Decoder
-Some applications present Cloud Events as binary data, but do not have "headers" like in HTTP or messages. For those use cases there is a lower level construct in Spring, and this project provides implementations in the form of `CloudEventEncoder` and `CloudEventDecoder`. Since the headers are not available in the surrounding abstraction, these only support _structured_ Cloud Events, where the attributes and data are packed together in the same byte buffer. As an example in an RSockets application you can register them like this:
+Some applications present Cloud Events as binary data, but do not have "headers" like in HTTP or messages.
+For those use cases there is a lower level construct in Spring, and this project provides implementations in the form of `CloudEventEncoder` and `CloudEventDecoder`.
+Since the headers are not available in the surrounding abstraction, these only support _structured_ Cloud Events, where the attributes and data are packed together in the same byte buffer.
+As an example, in an RSockets application, you can register them like this:
```java
@Bean
diff --git a/examples/amqp-proton/pom.xml b/examples/amqp-proton/pom.xml
index 670e1a520..0c1670468 100644
--- a/examples/amqp-proton/pom.xml
+++ b/examples/amqp-proton/pom.xml
@@ -1,35 +1,37 @@
-
-
- cloudevents-examples
- io.cloudevents
- 4.1.1-SNAPSHOT
-
- 4.0.0
+
+
+ cloudevents-examples
+ io.cloudevents
+ 4.1.1-SNAPSHOT
+
+ 4.0.0
- cloudevents-amqp-proton-example
+ cloudevents-amqp-proton-example
+ Cloudevents - AMQP Proton + Vert.x example
-
- cloudevents.example.amqp.proton
- 4.0.0.Beta1
-
-
-
- io.cloudevents
- cloudevents-amqp-proton
- ${project.version}
-
-
- io.vertx
- vertx-core
- ${vertx.version}
-
-
- io.vertx
- vertx-proton
- ${vertx.version}
-
+
+ cloudevents.example.amqp.proton
+ 4.5.27
+
+
+
+ io.cloudevents
+ cloudevents-amqp-proton
+ ${project.version}
+
+
+ io.vertx
+ vertx-core
+ ${vertx.version}
+
+
+ io.vertx
+ vertx-proton
+ ${vertx.version}
+
-
+
diff --git a/examples/basic-http/pom.xml b/examples/basic-http/pom.xml
index 76f8ac3f7..43dd5abb8 100644
--- a/examples/basic-http/pom.xml
+++ b/examples/basic-http/pom.xml
@@ -26,6 +26,8 @@
4.0.0cloudevents-basic-http-example
+ Cloudevents - basic HTTP example
+
cloudevents.example.basic.http
@@ -44,7 +46,7 @@
org.eclipse.jettyjetty-server
- 9.4.55.v20240627
+ 9.4.58.v20250814
diff --git a/examples/kafka/pom.xml b/examples/kafka/pom.xml
index 02d5941bb..69081f82d 100644
--- a/examples/kafka/pom.xml
+++ b/examples/kafka/pom.xml
@@ -10,6 +10,8 @@
4.0.0cloudevents-kafka-example
+ Cloudevents - Kafka example
+
cloudevents.example.kafka
diff --git a/examples/pom.xml b/examples/pom.xml
index e8b181646..9e760fe51 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -28,7 +28,6 @@
amqp-protonspring-reactivespring-rsocket
- spring-functionrocketmq
diff --git a/examples/restful-ws-microprofile-liberty/README.md b/examples/restful-ws-microprofile-liberty/README.md
index 31111fd90..e8c0c9762 100644
--- a/examples/restful-ws-microprofile-liberty/README.md
+++ b/examples/restful-ws-microprofile-liberty/README.md
@@ -2,7 +2,7 @@
This project uses Microprofile 5.0 with OpenLiberty
-If you would like to know more about Microprofile go to https://microprofile.io
+If you would like to know more about Microprofile, go to https://microprofile.io
This Example uses Jakarta EE 9+ features as such the top level namespace of the `ws-api` packages has changed from `javax` to `jakarta` and uses the `cloudevents-http-restful-ws-jakarta` artifact.
diff --git a/examples/restful-ws-microprofile-liberty/pom.xml b/examples/restful-ws-microprofile-liberty/pom.xml
index 5919c7cb7..e5f9eb31d 100644
--- a/examples/restful-ws-microprofile-liberty/pom.xml
+++ b/examples/restful-ws-microprofile-liberty/pom.xml
@@ -8,10 +8,11 @@
4.0.0cloudevents-restful-ws-microprofile-liberty-example
+ Cloudevents - JAX-RS, Microprofile and Liberty examplewar
- 3.5.1
+ 3.12.0cloudevents-microprofilecloudevents.example.restful.ws.microprofile.liberty
@@ -60,7 +61,6 @@
org.apache.maven.pluginsmaven-war-plugin
- 3.3.2falsepom.xml
@@ -69,7 +69,6 @@
org.apache.maven.pluginsmaven-dependency-plugin
- 2.10copy-server-files
@@ -148,7 +147,6 @@
org.apache.maven.pluginsmaven-failsafe-plugin
- 3.5.5integration-test
diff --git a/examples/restful-ws-quarkus/pom.xml b/examples/restful-ws-quarkus/pom.xml
index 883363a0f..d391c0fdb 100644
--- a/examples/restful-ws-quarkus/pom.xml
+++ b/examples/restful-ws-quarkus/pom.xml
@@ -9,19 +9,17 @@
4.0.0cloudevents-restful-ws-quarkus-example
+ Cloudevents - JAX-RS Quarkus examplecloudevents.example.restful.ws.quarkus
- 1.10.3.Final
- quarkus-universe-bom
- io.quarkus
- 1.10.3.Final
+ 1.13.7.Final
- ${quarkus.platform.group-id}
- ${quarkus.platform.artifact-id}
- ${quarkus.platform.version}
+ io.quarkus
+ quarkus-universe-bom
+ ${quarkus.version}pomimport
@@ -71,16 +69,19 @@
io.quarkusquarkus-maven-plugin
- ${quarkus-plugin.version}
+ ${quarkus.version}prepareprepare-testsbuild
+ generate-code
+ generate-code-tests
+ true
@@ -95,8 +96,8 @@
+ org.apache.maven.pluginsmaven-failsafe-plugin
- ${maven-surefire-plugin.version}
diff --git a/examples/restful-ws-spring-boot/pom.xml b/examples/restful-ws-spring-boot/pom.xml
index 8f108e791..d3fa361a3 100644
--- a/examples/restful-ws-spring-boot/pom.xml
+++ b/examples/restful-ws-spring-boot/pom.xml
@@ -10,19 +10,19 @@
4.0.0cloudevents-spring-boot-example
+ Cloudevents - Spring Boot examplecloudevents.example.spring.boot
- 2.3.2.RELEASE
- 5.2.9.RELEASE
+ 2.7.18
- org.springframework
- spring-framework-bom
- ${spring.version}
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}pomimport
@@ -33,7 +33,6 @@
org.springframework.bootspring-boot-starter-jersey
- ${spring-boot.version}io.cloudevents
diff --git a/examples/rocketmq/pom.xml b/examples/rocketmq/pom.xml
index da0cb1397..eb996df4b 100644
--- a/examples/rocketmq/pom.xml
+++ b/examples/rocketmq/pom.xml
@@ -10,6 +10,8 @@
4.0.0cloudevents-rocketmq-example
+ Cloudevents - RocketMQ example
+
cloudevents.example.rocketmq
diff --git a/examples/spring-function/README.md b/examples/spring-function/README.md
deleted file mode 100644
index 8dd2a1875..000000000
--- a/examples/spring-function/README.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# Spring Reactive + CloudEvents sample
-
-## Build
-
-```shell
-mvn package
-```
-
-## Start HTTP Server
-
-```shell
-mvn spring-boot:run
-```
-
-You can try sending a request using curl, and it echos back a cloud event the same body and with new `ce-*` headers:
-
-```shell
-curl -v -d '{"value": "Foo"}' \
- -H'Content-type: application/json' \
- -H'ce-id: 1' \
- -H'ce-source: cloud-event-example' \
- -H'ce-type: my.application.Foo' \
- -H'ce-specversion: 1.0' \
- http://localhost:8080/event
-```
-
-It also accepts data in "structured" format:
-
-```shell
-curl -v -H'Content-type: application/cloudevents+json' \
- -d '{"data": {"value": "Foo"},
- "id": "1",
- "source": "cloud-event-example",
- "type": "my.application.Foo",
- "specversion": "1.0"}' \
- http://localhost:8080/event
-```
-
-The `/event endpoint is implemented like this (the request and response are modelled directly as a `CloudEvent`):
-
-```java
-@PostMapping("/event")
-public Mono event(@RequestBody Mono body) {
- return ...;
-}
-```
-
-and to make that work we need to install the codecs:
-
-```java
-@Configuration
-public static class CloudEventHandlerConfiguration implements CodecCustomizer {
-
- @Override
- public void customize(CodecConfigurer configurer) {
- configurer.customCodecs().register(new CloudEventHttpMessageReader());
- configurer.customCodecs().register(new CloudEventHttpMessageWriter());
- }
-
-}
-```
-
-The same feature in Spring MVC is provided by the `CloudEventHttpMessageConverter`.
-
-
-The `/foos` endpoint does the same thing. It doesn't use the `CloudEvent` data type directly, but instead models the request and response body as a `Foo` (POJO type):
-
-```java
-@PostMapping("/foos")
-public ResponseEntity echo(@RequestBody Foo foo, @RequestHeader HttpHeaders headers) {
- ...
-}
-```
-
-Note that this endpoint only accepts "binary" format cloud events (context in HTTP headers like in the first example above). It translates the `HttpHeaders` to `CloudEventContext` using a utility class provided by `cloudevents-spring`.
diff --git a/examples/spring-function/pom.xml b/examples/spring-function/pom.xml
deleted file mode 100644
index e879018f8..000000000
--- a/examples/spring-function/pom.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
- cloudevents-examples
- io.cloudevents
- 4.1.1-SNAPSHOT
-
- 4.0.0
-
- cloudevents-spring-function-example
-
-
- cloudevents.example.spring.function
- 2.4.3
-
-
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-function-web
- 3.1.1
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- io.cloudevents
- cloudevents-spring
- ${project.version}
-
-
- io.cloudevents
- cloudevents-http-basic
- ${project.version}
-
-
- io.cloudevents
- cloudevents-json-jackson
- ${project.version}
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring-boot.version}
-
-
-
-
-
diff --git a/examples/spring-function/src/main/java/io/cloudevents/examples/spring/DemoApplication.java b/examples/spring-function/src/main/java/io/cloudevents/examples/spring/DemoApplication.java
deleted file mode 100644
index 2c999774c..000000000
--- a/examples/spring-function/src/main/java/io/cloudevents/examples/spring/DemoApplication.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package io.cloudevents.examples.spring;
-
-import java.net.URI;
-import java.util.UUID;
-import java.util.function.Function;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.codec.CodecCustomizer;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.codec.CodecConfigurer;
-
-import io.cloudevents.CloudEvent;
-import io.cloudevents.core.builder.CloudEventBuilder;
-import io.cloudevents.spring.messaging.CloudEventMessageConverter;
-import io.cloudevents.spring.webflux.CloudEventHttpMessageReader;
-import io.cloudevents.spring.webflux.CloudEventHttpMessageWriter;
-
-@SpringBootApplication
-public class DemoApplication {
-
- public static void main(String[] args) throws Exception {
- SpringApplication.run(DemoApplication.class, args);
- }
-
- @Bean
- public Function events() {
- return event -> CloudEventBuilder.from(event)
- .withId(UUID.randomUUID().toString())
- .withSource(URI.create("https://spring.io/foos"))
- .withType("io.spring.event.Foo")
- .withData(event.getData().toBytes())
- .build();
- }
-
- /**
- * Configure a MessageConverter for Spring Cloud Function to pick up and use to
- * convert to and from CloudEvent and Message.
- */
- @Configuration
- public static class CloudEventMessageConverterConfiguration {
- @Bean
- public CloudEventMessageConverter cloudEventMessageConverter() {
- return new CloudEventMessageConverter();
- }
- }
-
- /**
- * Configure an HTTP reader and writer so that we can process CloudEvents over
- * HTTP via Spring Webflux.
- */
- @Configuration
- public static class CloudEventHandlerConfiguration implements CodecCustomizer {
-
- @Override
- public void customize(CodecConfigurer configurer) {
- configurer.customCodecs().register(new CloudEventHttpMessageReader());
- configurer.customCodecs().register(new CloudEventHttpMessageWriter());
- }
-
- }
-
-}
diff --git a/examples/spring-function/src/main/java/io/cloudevents/examples/spring/Foo.java b/examples/spring-function/src/main/java/io/cloudevents/examples/spring/Foo.java
deleted file mode 100644
index 679c38df3..000000000
--- a/examples/spring-function/src/main/java/io/cloudevents/examples/spring/Foo.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2019-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package io.cloudevents.examples.spring;
-
-class Foo {
-
- private String value;
-
- public Foo() {
- }
-
- public Foo(String value) {
- this.value = value;
- }
-
- public String getValue() {
- return this.value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return "Foo [value=" + this.value + "]";
- }
-
-}
\ No newline at end of file
diff --git a/examples/spring-function/src/test/java/io/cloudevents/examples/spring/DemoApplicationTests.java b/examples/spring-function/src/test/java/io/cloudevents/examples/spring/DemoApplicationTests.java
deleted file mode 100644
index 94c465563..000000000
--- a/examples/spring-function/src/test/java/io/cloudevents/examples/spring/DemoApplicationTests.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package io.cloudevents.examples.spring;
-
-import java.net.URI;
-
-import org.junit.jupiter.api.Test;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.RequestEntity;
-import org.springframework.http.ResponseEntity;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-public class DemoApplicationTests {
-
- @Autowired
- private TestRestTemplate rest;
-
- @LocalServerPort
- private int port;
-
- @Test
- void echoWithCorrectHeaders() {
-
- ResponseEntity response = rest
- .exchange(RequestEntity.post(URI.create("http://localhost:" + port + "/foos")) //
- .header("ce-id", "12345") //
- .header("ce-specversion", "1.0") //
- .header("ce-type", "io.spring.event") //
- .header("ce-source", "https://spring.io/events") //
- .contentType(MediaType.APPLICATION_JSON) //
- .body("{\"value\":\"Dave\"}"), String.class);
-
- assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
- assertThat(response.getBody()).isEqualTo("{\"value\":\"Dave\"}");
-
- HttpHeaders headers = response.getHeaders();
-
- assertThat(headers).containsKey("ce-id");
- assertThat(headers).containsKey("ce-source");
- assertThat(headers).containsKey("ce-type");
-
- assertThat(headers.getFirst("ce-id")).isNotEqualTo("12345");
- assertThat(headers.getFirst("ce-type")).isEqualTo("io.spring.event.Foo");
- assertThat(headers.getFirst("ce-source")).isEqualTo("https://spring.io/foos");
-
- }
-
- @Test
- void structuredRequestResponseEvents() {
-
- ResponseEntity response = rest
- .exchange(RequestEntity.post(URI.create("http://localhost:" + port + "/event")) //
- .contentType(new MediaType("application", "cloudevents+json")) //
- .body("{" //
- + "\"id\":\"12345\"," //
- + "\"specversion\":\"1.0\"," //
- + "\"type\":\"io.spring.event\"," //
- + "\"source\":\"https://spring.io/events\"," //
- + "\"data\":{\"value\":\"Dave\"}}"),
- String.class);
-
- assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
- assertThat(response.getBody()).isEqualTo("{\"value\":\"Dave\"}");
-
- HttpHeaders headers = response.getHeaders();
-
- assertThat(headers).containsKey("ce-id");
- assertThat(headers).containsKey("ce-source");
- assertThat(headers).containsKey("ce-type");
-
- assertThat(headers.getFirst("ce-id")).isNotEqualTo("12345");
- assertThat(headers.getFirst("ce-type")).isEqualTo("io.spring.event.Foo");
- assertThat(headers.getFirst("ce-source")).isEqualTo("https://spring.io/foos");
-
- }
-
- @Test
- void requestResponseEvents() {
-
- ResponseEntity response = rest
- .exchange(RequestEntity.post(URI.create("http://localhost:" + port + "/event")) //
- .header("ce-id", "12345") //
- .header("ce-specversion", "1.0") //
- .header("ce-type", "io.spring.event") //
- .header("ce-source", "https://spring.io/events") //
- .contentType(MediaType.APPLICATION_JSON) //
- .body("{\"value\":\"Dave\"}"), String.class);
-
- assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
- assertThat(response.getBody()).isEqualTo("{\"value\":\"Dave\"}");
-
- HttpHeaders headers = response.getHeaders();
-
- assertThat(headers).containsKey("ce-id");
- assertThat(headers).containsKey("ce-source");
- assertThat(headers).containsKey("ce-type");
-
- assertThat(headers.getFirst("ce-id")).isNotEqualTo("12345");
- assertThat(headers.getFirst("ce-type")).isEqualTo("io.spring.event.Foo");
- assertThat(headers.getFirst("ce-source")).isEqualTo("https://spring.io/foos");
-
- }
-
-}
diff --git a/examples/spring-reactive/pom.xml b/examples/spring-reactive/pom.xml
index 0c8291cff..b173ac6d4 100644
--- a/examples/spring-reactive/pom.xml
+++ b/examples/spring-reactive/pom.xml
@@ -1,7 +1,7 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
cloudevents-examplesio.cloudevents
@@ -10,10 +10,11 @@
4.0.0cloudevents-spring-reactive-example
+ Cloudevents - Reactive Spring examplecloudevents.example.spring.reactive
- 2.4.3
+ 2.7.18
@@ -64,5 +65,5 @@
-
+
diff --git a/examples/spring-reactive/src/test/java/io/cloudevents/examples/spring/WebClientTests.java b/examples/spring-reactive/src/test/java/io/cloudevents/examples/spring/WebClientTests.java
index 33d997ce1..139b30c8a 100644
--- a/examples/spring-reactive/src/test/java/io/cloudevents/examples/spring/WebClientTests.java
+++ b/examples/spring-reactive/src/test/java/io/cloudevents/examples/spring/WebClientTests.java
@@ -10,7 +10,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.web.reactive.function.client.WebClient;
import io.cloudevents.CloudEvent;
diff --git a/examples/spring-rsocket/pom.xml b/examples/spring-rsocket/pom.xml
index 59f8976bb..be7ec8bcb 100644
--- a/examples/spring-rsocket/pom.xml
+++ b/examples/spring-rsocket/pom.xml
@@ -1,7 +1,7 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
cloudevents-examplesio.cloudevents
@@ -10,10 +10,11 @@
4.0.0cloudevents-spring-rsocket-example
+ Cloudevents - Spring RSocket examplecloudevents.example.spring.rsocket
- 2.4.3
+ 2.7.18
@@ -59,5 +60,5 @@
-
+
diff --git a/examples/vertx/pom.xml b/examples/vertx/pom.xml
index 019bd8109..04b76747f 100644
--- a/examples/vertx/pom.xml
+++ b/examples/vertx/pom.xml
@@ -1,7 +1,7 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
cloudevents-examplesio.cloudevents
@@ -10,6 +10,8 @@
4.0.0cloudevents-vertx-example
+ Cloudevents - Vert.x example
+
cloudevents.example.vertx
diff --git a/formats/avro-compact/pom.xml b/formats/avro-compact/pom.xml
index 69589014a..ecae76d14 100644
--- a/formats/avro-compact/pom.xml
+++ b/formats/avro-compact/pom.xml
@@ -40,7 +40,7 @@
org.apache.avroavro-maven-plugin
- 1.11.2
+ 1.11.5String
diff --git a/formats/json-jackson/pom.xml b/formats/json-jackson/pom.xml
index 919519c81..0dc61a38f 100644
--- a/formats/json-jackson/pom.xml
+++ b/formats/json-jackson/pom.xml
@@ -31,7 +31,7 @@
jar
- 2.21.2
+ 2.21.3io.cloudevents.formats.jackson
diff --git a/formats/protobuf/pom.xml b/formats/protobuf/pom.xml
index d183f08b8..90d90a36e 100644
--- a/formats/protobuf/pom.xml
+++ b/formats/protobuf/pom.xml
@@ -114,6 +114,12 @@
truth-proto-extension1.4.4test
+
+
+ junit
+ junit
+
+
diff --git a/http/restful-ws-integration-tests/restful-ws-jersey/pom.xml b/http/restful-ws-integration-tests/restful-ws-jersey/pom.xml
index 70a5e0b74..79f65e980 100644
--- a/http/restful-ws-integration-tests/restful-ws-jersey/pom.xml
+++ b/http/restful-ws-integration-tests/restful-ws-jersey/pom.xml
@@ -32,7 +32,7 @@
jar
- 2.30.1
+ 2.48io.cloudevents.jaxrs.integration.tests.jersey
@@ -50,6 +50,12 @@
jersey-test-framework-provider-jetty${jersey.version}test
+
+
+ junit
+ junit
+
+ org.glassfish.jersey.inject
diff --git a/http/restful-ws-integration-tests/restful-ws-resteasy/pom.xml b/http/restful-ws-integration-tests/restful-ws-resteasy/pom.xml
index 5a3a0bda8..07e701e65 100644
--- a/http/restful-ws-integration-tests/restful-ws-resteasy/pom.xml
+++ b/http/restful-ws-integration-tests/restful-ws-resteasy/pom.xml
@@ -33,8 +33,8 @@
io.cloudevents.jaxrs.integration.tests.resteasy
- 3.9.2
- 4.5.6.Final
+ 3.9.16
+ 4.5.12.Final
diff --git a/http/restful-ws-integration-tests/restful-ws-spring/pom.xml b/http/restful-ws-integration-tests/restful-ws-spring/pom.xml
index de4058487..805a86ffa 100644
--- a/http/restful-ws-integration-tests/restful-ws-spring/pom.xml
+++ b/http/restful-ws-integration-tests/restful-ws-spring/pom.xml
@@ -33,16 +33,15 @@
io.cloudevents.jaxrs.integration.tests.spring
- 2.3.2.RELEASE
- 5.2.9.RELEASE
+ 2.7.18
- org.springframework
- spring-framework-bom
- ${spring.version}
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}pomimport
@@ -61,20 +60,12 @@
org.springframework.bootspring-boot-starter-jersey
- ${spring-boot.version}testorg.springframework.bootspring-boot-starter-test
- ${spring-boot.version}test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
diff --git a/http/restful-ws-integration-tests/restful-ws-spring/src/test/java/io/cloudevents/http/restful/ws/spring/TestSpringBootWithJersey.java b/http/restful-ws-integration-tests/restful-ws-spring/src/test/java/io/cloudevents/http/restful/ws/spring/TestSpringBootWithJersey.java
index 3f7519ce5..494d0bc81 100644
--- a/http/restful-ws-integration-tests/restful-ws-spring/src/test/java/io/cloudevents/http/restful/ws/spring/TestSpringBootWithJersey.java
+++ b/http/restful-ws-integration-tests/restful-ws-spring/src/test/java/io/cloudevents/http/restful/ws/spring/TestSpringBootWithJersey.java
@@ -24,16 +24,13 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.boot.test.web.server.LocalServerPort;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import java.net.URI;
-@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class TestSpringBootWithJersey extends BaseTest {
diff --git a/http/restful-ws-jakarta-integration-tests/restful-ws-liberty/pom.xml b/http/restful-ws-jakarta-integration-tests/restful-ws-liberty/pom.xml
index b107a3be0..8697cb4e7 100644
--- a/http/restful-ws-jakarta-integration-tests/restful-ws-liberty/pom.xml
+++ b/http/restful-ws-jakarta-integration-tests/restful-ws-liberty/pom.xml
@@ -17,6 +17,8 @@
cloudevents.http.restful.ws.jakarta.integration.tests.microprofile
+ 6.0.3.Final
+
90809443
@@ -66,13 +68,13 @@
org.jboss.resteasyresteasy-client
- 6.0.3.Final
+ ${resteasy.version}testorg.jboss.resteasyresteasy-json-binding-provider
- 6.0.3.Final
+ ${resteasy.version}test
@@ -94,11 +96,17 @@
io.openliberty.arquillian
- arquillian-liberty-managed-jakarta-junit
+ arquillian-liberty-managed-jakarta-junit52.1.4pomtest
+
+ org.assertj
+ assertj-core
+ ${assertj-core.version}
+ test
+ org.jboss.shrinkwrapshrinkwrap-api
@@ -112,7 +120,6 @@
org.apache.maven.pluginsmaven-war-plugin
- 3.3.2pom.xml
@@ -120,7 +127,6 @@
org.apache.maven.pluginsmaven-failsafe-plugin
- 3.5.5${arquillian.war.name}.war
@@ -138,7 +144,7 @@
io.openliberty.toolsliberty-maven-plugin
- 3.5.1
+ 3.12.0
diff --git a/http/restful-ws-jakarta-integration-tests/restful-ws-liberty/src/test/java/io/cloudevents/http/restful/ws/jakarta/microprofile/TestMicroprofile.java b/http/restful-ws-jakarta-integration-tests/restful-ws-liberty/src/test/java/io/cloudevents/http/restful/ws/jakarta/microprofile/TestMicroprofile.java
index 184fa2c8d..dc742c6a3 100644
--- a/http/restful-ws-jakarta-integration-tests/restful-ws-liberty/src/test/java/io/cloudevents/http/restful/ws/jakarta/microprofile/TestMicroprofile.java
+++ b/http/restful-ws-jakarta-integration-tests/restful-ws-liberty/src/test/java/io/cloudevents/http/restful/ws/jakarta/microprofile/TestMicroprofile.java
@@ -12,21 +12,18 @@
import jakarta.ws.rs.core.Response;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.RunAsClient;
-import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.junit5.ArquillianExtension;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
import java.net.URL;
+import static org.assertj.core.api.Assertions.assertThat;
-/**
- * Arquilian does not support assertj, so test cases have been ported to Junit to work with arquilian
- */
-@RunWith(Arquillian.class)
+@ExtendWith(ArquillianExtension.class)
public class TestMicroprofile {
private static final String WARNAME = "microprofile-test.war";
@@ -57,8 +54,8 @@ public WebTarget getWebTarget() {
public void getMinEvent() {
Response res = getWebTarget().path("getMinEvent").request().buildGet().invoke();
- Assert.assertEquals("1.0",res.getHeaderString("ce-specversion"));
- Assert.assertEquals(Data.V1_MIN,res.readEntity(CloudEvent.class));
+ assertThat(res.getHeaderString("ce-specversion")).isEqualTo("1.0");
+ assertThat(res.readEntity(CloudEvent.class)).isEqualTo(Data.V1_MIN);
res.close();
}
@@ -68,8 +65,8 @@ public void getMinEvent() {
public void getStructuredEvent() {
Response res = getWebTarget().path("getStructuredEvent").request().buildGet().invoke();
- Assert.assertEquals(Data.V1_MIN,res.readEntity(CloudEvent.class));
- Assert.assertEquals(CSVFormat.INSTANCE.serializedContentType(),res.getHeaderString(HttpHeaders.CONTENT_TYPE));
+ assertThat(res.readEntity(CloudEvent.class)).isEqualTo(Data.V1_MIN);
+ assertThat(res.getHeaderString(HttpHeaders.CONTENT_TYPE)).isEqualTo(CSVFormat.INSTANCE.serializedContentType());
res.close();
}
@@ -79,8 +76,8 @@ public void getStructuredEvent() {
public void testGetEvent() throws Exception {
Response response = getWebTarget().path("getEvent").request().buildGet().invoke();
- Assert.assertEquals("Valid response code", 200, response.getStatus());
- Assert.assertEquals("should match", Data.V1_WITH_JSON_DATA_WITH_EXT_STRING, response.readEntity(CloudEvent.class));
+ assertThat(response.getStatus()).as("Valid response code").isEqualTo(200);
+ assertThat(response.readEntity(CloudEvent.class)).as("should match").isEqualTo(Data.V1_WITH_JSON_DATA_WITH_EXT_STRING);
response.close();
}
@@ -94,7 +91,7 @@ public void postEventWithoutBody() {
.buildPost(Entity.entity(Data.V1_MIN, CloudEventsProvider.CLOUDEVENT_TYPE))
.invoke();
- Assert.assertEquals(200,res.getStatus());
+ assertThat(res.getStatus()).isEqualTo(200);
}
@Test
@@ -106,7 +103,7 @@ public void postEventStructured() {
.buildPost(Entity.entity(Data.V1_MIN, "application/cloudevents+csv"))
.invoke();
- Assert.assertEquals(200,res.getStatus());
+ assertThat(res.getStatus()).isEqualTo(200);
}
@Test
@@ -118,6 +115,6 @@ public void postEvent() {
.buildPost(Entity.entity(Data.V1_WITH_JSON_DATA_WITH_EXT_STRING, CloudEventsProvider.CLOUDEVENT_TYPE))
.invoke();
- Assert.assertEquals(200,res.getStatus());
+ assertThat(res.getStatus()).isEqualTo(200);
}
}
diff --git a/http/restful-ws-jakarta-integration-tests/restful-ws-resteasy/pom.xml b/http/restful-ws-jakarta-integration-tests/restful-ws-resteasy/pom.xml
index 08e79785a..9caa2d9d1 100644
--- a/http/restful-ws-jakarta-integration-tests/restful-ws-resteasy/pom.xml
+++ b/http/restful-ws-jakarta-integration-tests/restful-ws-resteasy/pom.xml
@@ -15,7 +15,7 @@
cloudevents.http.restful.ws.jakarta.integration.tests.resteasy
- 4.5.24
+ 4.5.276.0.3.Final
diff --git a/http/restful-ws-jakarta/pom.xml b/http/restful-ws-jakarta/pom.xml
index 3e05fb22a..28902486a 100644
--- a/http/restful-ws-jakarta/pom.xml
+++ b/http/restful-ws-jakarta/pom.xml
@@ -43,7 +43,7 @@
3.0.03.0.8
- 4.4.3
+ 4.5.276.0.3.Finalio.cloudevents.http.restfulws
diff --git a/http/restful-ws/pom.xml b/http/restful-ws/pom.xml
index bbe2c21d8..cf12cc651 100644
--- a/http/restful-ws/pom.xml
+++ b/http/restful-ws/pom.xml
@@ -31,9 +31,9 @@
2.1.6
- 2.30.1
- 3.9.0
- 4.5.3.Final
+ 2.48
+ 3.9.16
+ 4.5.12.Finalio.cloudevents.http.restfulws
diff --git a/http/vertx/pom.xml b/http/vertx/pom.xml
index 2725d80af..ebb44648b 100644
--- a/http/vertx/pom.xml
+++ b/http/vertx/pom.xml
@@ -31,7 +31,7 @@
jar
- 4.5.3
+ 4.5.27io.cloudevents.http.vertx
@@ -39,7 +39,7 @@
com.google.code.findbugsjsr305
- 3.0.2
+ ${jsr305.version}providedtrue
diff --git a/kafka/pom.xml b/kafka/pom.xml
index 5c2f35a77..6d7d9c73e 100644
--- a/kafka/pom.xml
+++ b/kafka/pom.xml
@@ -31,7 +31,7 @@
jar
- 3.9.1
+ 3.9.2io.cloudevents.kafka
@@ -39,7 +39,7 @@
com.google.code.findbugsjsr305
- 3.0.2
+ ${jsr305.version}providedtrue
diff --git a/mvnw b/mvnw
index 41c0f0c23..bd8896bf2 100755
--- a/mvnw
+++ b/mvnw
@@ -19,292 +19,277 @@
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
-# Maven Start Up Batch script
-#
-# Required ENV vars:
-# ------------------
-# JAVA_HOME - location of a JDK home dir
+# Apache Maven Wrapper startup batch script, version 3.3.4
#
# Optional ENV vars
# -----------------
-# M2_HOME - location of maven2's installed home dir
-# MAVEN_OPTS - parameters passed to the Java VM when running Maven
-# e.g. to debug Maven itself, use
-# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# JAVA_HOME - location of a JDK home dir, required when download maven via java source
+# MVNW_REPOURL - repo url base for downloading maven distribution
+# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
+# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
# ----------------------------------------------------------------------------
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
- if [ -f /etc/mavenrc ] ; then
- . /etc/mavenrc
- fi
+set -euf
+[ "${MVNW_VERBOSE-}" != debug ] || set -x
- if [ -f "$HOME/.mavenrc" ] ; then
- . "$HOME/.mavenrc"
- fi
+# OS specific support.
+native_path() { printf %s\\n "$1"; }
+case "$(uname)" in
+CYGWIN* | MINGW*)
+ [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
+ native_path() { cygpath --path --windows "$1"; }
+ ;;
+esac
-fi
+# set JAVACMD and JAVACCMD
+set_java_home() {
+ # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
+ if [ -n "${JAVA_HOME-}" ]; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ]; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACCMD="$JAVA_HOME/jre/sh/javac"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ JAVACCMD="$JAVA_HOME/bin/javac"
-# OS specific support. $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-mingw=false
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
- MINGW*) mingw=true;;
- Darwin*) darwin=true
- # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
- # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
- if [ -z "$JAVA_HOME" ]; then
- if [ -x "/usr/libexec/java_home" ]; then
- export JAVA_HOME="`/usr/libexec/java_home`"
- else
- export JAVA_HOME="/Library/Java/Home"
+ if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
+ echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
+ echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
+ return 1
fi
fi
- ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
- if [ -r /etc/gentoo-release ] ; then
- JAVA_HOME=`java-config --jre-home`
+ else
+ JAVACMD="$(
+ 'set' +e
+ 'unset' -f command 2>/dev/null
+ 'command' -v java
+ )" || :
+ JAVACCMD="$(
+ 'set' +e
+ 'unset' -f command 2>/dev/null
+ 'command' -v javac
+ )" || :
+
+ if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
+ echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
+ return 1
+ fi
fi
-fi
-
-if [ -z "$M2_HOME" ] ; then
- ## resolve links - $0 may be a link to maven's home
- PRG="$0"
+}
- # need this for relative symlinks
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG="`dirname "$PRG"`/$link"
- fi
+# hash string like Java String::hashCode
+hash_string() {
+ str="${1:-}" h=0
+ while [ -n "$str" ]; do
+ char="${str%"${str#?}"}"
+ h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
+ str="${str#?}"
done
+ printf %x\\n $h
+}
- saveddir=`pwd`
+verbose() { :; }
+[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
- M2_HOME=`dirname "$PRG"`/..
+die() {
+ printf %s\\n "$1" >&2
+ exit 1
+}
- # make it fully qualified
- M2_HOME=`cd "$M2_HOME" && pwd`
+trim() {
+ # MWRAPPER-139:
+ # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
+ # Needed for removing poorly interpreted newline sequences when running in more
+ # exotic environments such as mingw bash on Windows.
+ printf "%s" "${1}" | tr -d '[:space:]'
+}
- cd "$saveddir"
- # echo Using m2 at $M2_HOME
-fi
+scriptDir="$(dirname "$0")"
+scriptName="$(basename "$0")"
+
+# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
+while IFS="=" read -r key value; do
+ case "${key-}" in
+ distributionUrl) distributionUrl=$(trim "${value-}") ;;
+ distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
+ esac
+done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties"
+[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
+
+case "${distributionUrl##*/}" in
+maven-mvnd-*bin.*)
+ MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
+ case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
+ *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
+ :Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
+ :Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
+ :Linux*x86_64*) distributionPlatform=linux-amd64 ;;
+ *)
+ echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
+ distributionPlatform=linux-amd64
+ ;;
+ esac
+ distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
+ ;;
+maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
+*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
+esac
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --unix "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
+# apply MVNW_REPOURL and calculate MAVEN_HOME
+# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/
+[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
+distributionUrlName="${distributionUrl##*/}"
+distributionUrlNameMain="${distributionUrlName%.*}"
+distributionUrlNameMain="${distributionUrlNameMain%-bin}"
+MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
+MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
+
+exec_maven() {
+ unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
+ exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
+}
-# For Mingw, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
- [ -n "$M2_HOME" ] &&
- M2_HOME="`(cd "$M2_HOME"; pwd)`"
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
+if [ -d "$MAVEN_HOME" ]; then
+ verbose "found existing MAVEN_HOME at $MAVEN_HOME"
+ exec_maven "$@"
fi
-if [ -z "$JAVA_HOME" ]; then
- javaExecutable="`which javac`"
- if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
- # readlink(1) is not available as standard on Solaris 10.
- readLink=`which readlink`
- if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
- if $darwin ; then
- javaHome="`dirname \"$javaExecutable\"`"
- javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
- else
- javaExecutable="`readlink -f \"$javaExecutable\"`"
- fi
- javaHome="`dirname \"$javaExecutable\"`"
- javaHome=`expr "$javaHome" : '\(.*\)/bin'`
- JAVA_HOME="$javaHome"
- export JAVA_HOME
- fi
- fi
-fi
+case "${distributionUrl-}" in
+*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
+*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
+esac
-if [ -z "$JAVACMD" ] ; then
- if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- else
- JAVACMD="`which java`"
- fi
+# prepare tmp dir
+if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
+ clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
+ trap clean HUP INT TERM EXIT
+else
+ die "cannot create temp dir"
fi
-if [ ! -x "$JAVACMD" ] ; then
- echo "Error: JAVA_HOME is not defined correctly." >&2
- echo " We cannot execute $JAVACMD" >&2
- exit 1
-fi
+mkdir -p -- "${MAVEN_HOME%/*}"
-if [ -z "$JAVA_HOME" ] ; then
- echo "Warning: JAVA_HOME environment variable is not set."
+# Download and Install Apache Maven
+verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
+verbose "Downloading from: $distributionUrl"
+verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
+
+# select .zip or .tar.gz
+if ! command -v unzip >/dev/null; then
+ distributionUrl="${distributionUrl%.zip}.tar.gz"
+ distributionUrlName="${distributionUrl##*/}"
fi
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+# verbose opt
+__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
+[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
+# normalize http auth
+case "${MVNW_PASSWORD:+has-password}" in
+'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
+has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
+esac
- if [ -z "$1" ]
- then
- echo "Path not specified to find_maven_basedir"
- return 1
- fi
+if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
+ verbose "Found wget ... using wget"
+ wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
+elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
+ verbose "Found curl ... using curl"
+ curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
+elif set_java_home; then
+ verbose "Falling back to use Java to download"
+ javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
+ targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
+ cat >"$javaSource" <<-END
+ public class Downloader extends java.net.Authenticator
+ {
+ protected java.net.PasswordAuthentication getPasswordAuthentication()
+ {
+ return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
+ }
+ public static void main( String[] args ) throws Exception
+ {
+ setDefault( new Downloader() );
+ java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
+ }
+ }
+ END
+ # For Cygwin/MinGW, switch paths to Windows format before running javac and java
+ verbose " - Compiling Downloader.java ..."
+ "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
+ verbose " - Running Downloader.java ..."
+ "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
+fi
- basedir="$1"
- wdir="$1"
- while [ "$wdir" != '/' ] ; do
- if [ -d "$wdir"/.mvn ] ; then
- basedir=$wdir
- break
+# If specified, validate the SHA-256 sum of the Maven distribution zip file
+if [ -n "${distributionSha256Sum-}" ]; then
+ distributionSha256Result=false
+ if [ "$MVN_CMD" = mvnd.sh ]; then
+ echo "Checksum validation is not supported for maven-mvnd." >&2
+ echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ elif command -v sha256sum >/dev/null; then
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then
+ distributionSha256Result=true
fi
- # workaround for JBEAP-8937 (on Solaris 10/Sparc)
- if [ -d "${wdir}" ]; then
- wdir=`cd "$wdir/.."; pwd`
+ elif command -v shasum >/dev/null; then
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
+ distributionSha256Result=true
fi
- # end of workaround
- done
- echo "${basedir}"
-}
-
-# concatenates all lines of a file
-concat_lines() {
- if [ -f "$1" ]; then
- echo "$(tr -s '\n' ' ' < "$1")"
+ else
+ echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
+ echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ fi
+ if [ $distributionSha256Result = false ]; then
+ echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
+ echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
+ exit 1
fi
-}
-
-BASE_DIR=`find_maven_basedir "$(pwd)"`
-if [ -z "$BASE_DIR" ]; then
- exit 1;
fi
-##########################################################################################
-# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-# This allows using the maven wrapper in projects that prohibit checking in binary data.
-##########################################################################################
-if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found .mvn/wrapper/maven-wrapper.jar"
- fi
+# unzip and move
+if command -v unzip >/dev/null; then
+ unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
else
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
- fi
- if [ -n "$MVNW_REPOURL" ]; then
- jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
- else
- jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
- fi
- while IFS="=" read key value; do
- case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
- esac
- done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Downloading from: $jarUrl"
- fi
- wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
- if $cygwin; then
- wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
- fi
+ tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
+fi
- if command -v wget > /dev/null; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found wget ... using wget"
- fi
- if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
- wget "$jarUrl" -O "$wrapperJarPath"
- else
- wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
- fi
- elif command -v curl > /dev/null; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Found curl ... using curl"
- fi
- if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
- curl -o "$wrapperJarPath" "$jarUrl" -f
- else
- curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
- fi
+# Find the actual extracted directory name (handles snapshots where filename != directory name)
+actualDistributionDir=""
- else
- if [ "$MVNW_VERBOSE" = true ]; then
- echo "Falling back to using Java to download"
- fi
- javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
- # For Cygwin, switch paths to Windows format before running javac
- if $cygwin; then
- javaClass=`cygpath --path --windows "$javaClass"`
- fi
- if [ -e "$javaClass" ]; then
- if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
- if [ "$MVNW_VERBOSE" = true ]; then
- echo " - Compiling MavenWrapperDownloader.java ..."
- fi
- # Compiling the Java class
- ("$JAVA_HOME/bin/javac" "$javaClass")
- fi
- if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
- # Running the downloader
- if [ "$MVNW_VERBOSE" = true ]; then
- echo " - Running MavenWrapperDownloader.java ..."
- fi
- ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
- fi
- fi
- fi
+# First try the expected directory name (for regular distributions)
+if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then
+ if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then
+ actualDistributionDir="$distributionUrlNameMain"
+ fi
fi
-##########################################################################################
-# End of extension
-##########################################################################################
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
-if [ "$MVNW_VERBOSE" = true ]; then
- echo $MAVEN_PROJECTBASEDIR
-fi
-MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --path --windows "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
- [ -n "$MAVEN_PROJECTBASEDIR" ] &&
- MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+# If not found, search for any directory with the Maven executable (for snapshots)
+if [ -z "$actualDistributionDir" ]; then
+ # enable globbing to iterate over items
+ set +f
+ for dir in "$TMP_DOWNLOAD_DIR"/*; do
+ if [ -d "$dir" ]; then
+ if [ -f "$dir/bin/$MVN_CMD" ]; then
+ actualDistributionDir="$(basename "$dir")"
+ break
+ fi
+ fi
+ done
+ set -f
fi
-# Provide a "standardized" way to retrieve the CLI args that will
-# work with both Windows and non-Windows executions.
-MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
-export MAVEN_CMD_LINE_ARGS
+if [ -z "$actualDistributionDir" ]; then
+ verbose "Contents of $TMP_DOWNLOAD_DIR:"
+ verbose "$(ls -la "$TMP_DOWNLOAD_DIR")"
+ die "Could not find Maven distribution directory in extracted archive"
+fi
-WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+verbose "Found extracted Maven distribution directory: $actualDistributionDir"
+printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url"
+mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
-exec "$JAVACMD" \
- $MAVEN_OPTS \
- -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
- "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
- ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
+clean || :
+exec_maven "$@"
diff --git a/mvnw.cmd b/mvnw.cmd
index 86115719e..92450f932 100644
--- a/mvnw.cmd
+++ b/mvnw.cmd
@@ -1,3 +1,4 @@
+<# : batch portion
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@@ -18,165 +19,171 @@
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
-@REM Maven Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
+@REM Apache Maven Wrapper startup batch script, version 3.3.4
@REM
@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM MVNW_REPOURL - repo url base for downloading maven distribution
+@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
+@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
@REM ----------------------------------------------------------------------------
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM set title of command window
-title %0
-@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
-if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
-
-FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
- IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
-)
-
-@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
-if exist %WRAPPER_JAR% (
- if "%MVNW_VERBOSE%" == "true" (
- echo Found %WRAPPER_JAR%
- )
-) else (
- if not "%MVNW_REPOURL%" == "" (
- SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
- )
- if "%MVNW_VERBOSE%" == "true" (
- echo Couldn't find %WRAPPER_JAR%, downloading it ...
- echo Downloading from: %DOWNLOAD_URL%
- )
-
- powershell -Command "&{"^
- "$webclient = new-object System.Net.WebClient;"^
- "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
- "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
- "}"^
- "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
- "}"
- if "%MVNW_VERBOSE%" == "true" (
- echo Finished downloading %WRAPPER_JAR%
- )
+@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
+@SET __MVNW_CMD__=
+@SET __MVNW_ERROR__=
+@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
+@SET PSModulePath=
+@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
+ IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
)
-@REM End of extension
-
-@REM Provide a "standardized" way to retrieve the CLI args that will
-@REM work with both Windows and non-Windows executions.
-set MAVEN_CMD_LINE_ARGS=%*
-
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
-if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%" == "on" pause
-
-if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
-
-exit /B %ERROR_CODE%
+@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
+@SET __MVNW_PSMODULEP_SAVE=
+@SET __MVNW_ARG0_NAME__=
+@SET MVNW_USERNAME=
+@SET MVNW_PASSWORD=
+@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*)
+@echo Cannot start maven from wrapper >&2 && exit /b 1
+@GOTO :EOF
+: end batch / begin powershell #>
+
+$ErrorActionPreference = "Stop"
+if ($env:MVNW_VERBOSE -eq "true") {
+ $VerbosePreference = "Continue"
+}
+
+# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
+$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
+if (!$distributionUrl) {
+ Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
+}
+
+switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
+ "maven-mvnd-*" {
+ $USE_MVND = $true
+ $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
+ $MVN_CMD = "mvnd.cmd"
+ break
+ }
+ default {
+ $USE_MVND = $false
+ $MVN_CMD = $script -replace '^mvnw','mvn'
+ break
+ }
+}
+
+# apply MVNW_REPOURL and calculate MAVEN_HOME
+# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/
+if ($env:MVNW_REPOURL) {
+ $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" }
+ $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')"
+}
+$distributionUrlName = $distributionUrl -replace '^.*/',''
+$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
+
+$MAVEN_M2_PATH = "$HOME/.m2"
+if ($env:MAVEN_USER_HOME) {
+ $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME"
+}
+
+if (-not (Test-Path -Path $MAVEN_M2_PATH)) {
+ New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null
+}
+
+$MAVEN_WRAPPER_DISTS = $null
+if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) {
+ $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists"
+} else {
+ $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists"
+}
+
+$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain"
+$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
+$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
+
+if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
+ Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
+ Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
+ exit $?
+}
+
+if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
+ Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
+}
+
+# prepare tmp dir
+$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
+$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
+$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
+trap {
+ if ($TMP_DOWNLOAD_DIR.Exists) {
+ try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
+ catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
+ }
+}
+
+New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
+
+# Download and Install Apache Maven
+Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
+Write-Verbose "Downloading from: $distributionUrl"
+Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
+
+$webclient = New-Object System.Net.WebClient
+if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
+ $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
+}
+[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
+
+# If specified, validate the SHA-256 sum of the Maven distribution zip file
+$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
+if ($distributionSha256Sum) {
+ if ($USE_MVND) {
+ Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
+ }
+ Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
+ if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
+ Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
+ }
+}
+
+# unzip and move
+Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
+
+# Find the actual extracted directory name (handles snapshots where filename != directory name)
+$actualDistributionDir = ""
+
+# First try the expected directory name (for regular distributions)
+$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain"
+$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD"
+if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) {
+ $actualDistributionDir = $distributionUrlNameMain
+}
+
+# If not found, search for any directory with the Maven executable (for snapshots)
+if (!$actualDistributionDir) {
+ Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object {
+ $testPath = Join-Path $_.FullName "bin/$MVN_CMD"
+ if (Test-Path -Path $testPath -PathType Leaf) {
+ $actualDistributionDir = $_.Name
+ }
+ }
+}
+
+if (!$actualDistributionDir) {
+ Write-Error "Could not find Maven distribution directory in extracted archive"
+}
+
+Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir"
+Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null
+try {
+ Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
+} catch {
+ if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
+ Write-Error "fail to move MAVEN_HOME"
+ }
+} finally {
+ try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
+ catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
+}
+
+Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
diff --git a/pom.xml b/pom.xml
index fab527f99..22f8d1dc5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,13 +89,10 @@
8UTF-8
-
- 3.5.5
- 0.1.0
-
- 3.16.1
- 5.7.0
+ 3.27.7
+ 5.14.4
+ 3.0.2
@@ -121,11 +118,17 @@
org.apache.maven.pluginsmaven-surefire-plugin
- ${maven-surefire-plugin.version}
+ 3.5.5
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+ 3.5.5org.apache.maven.pluginsmaven-jar-plugin
+ 3.5.0
@@ -137,7 +140,7 @@
org.ec4j.maveneditorconfig-maven-plugin
- ${maven-editorconfig-plugin.version}
+ 0.2.0check
@@ -155,6 +158,21 @@
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.5.1
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ 3.10.0
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 3.5.0
+
@@ -162,14 +180,16 @@
org.apache.maven.pluginsmaven-javadoc-plugin
- 3.2.0
+ 3.12.0
https://docs.spring.io/spring-framework/docs/current/javadoc-api/
https://jakarta.ee/specifications/platform/8/apidocs/
- https://kafka.apache.org/30/javadoc/
- https://fasterxml.github.io/jackson-databind/javadoc/2.10/
+ https://kafka.apache.org/39/javadoc/
+ https://www.javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/latest/
+ https://projectreactor.io/docs/core/release/api/
+ https://www.reactive-streams.org/reactive-streams-1.0.4-javadoc/
8
@@ -186,7 +206,7 @@
org.apache.maven.pluginsmaven-source-plugin
- 3.3.0
+ 3.4.0attach-sources
@@ -241,7 +261,7 @@
org.apache.maven.pluginsmaven-gpg-plugin
- 3.1.0
+ 3.2.8sign-artifacts
diff --git a/rocketmq/pom.xml b/rocketmq/pom.xml
index 15ae4e794..412c47811 100644
--- a/rocketmq/pom.xml
+++ b/rocketmq/pom.xml
@@ -31,7 +31,7 @@
jar
- 5.0.7
+ 5.1.0io.cloudevents.rocketmq
diff --git a/spring/pom.xml b/spring/pom.xml
index f2d02792b..d45808c0b 100644
--- a/spring/pom.xml
+++ b/spring/pom.xml
@@ -32,7 +32,7 @@
io.cloudevents.spring
- 2.4.3
+ 2.7.18
@@ -82,7 +82,7 @@
com.google.code.findbugsjsr305
- 3.0.2
+ ${jsr305.version}providedtrue
diff --git a/spring/src/test/java/io/cloudevents/spring/mvc/MvcRestControllerTests.java b/spring/src/test/java/io/cloudevents/spring/mvc/MvcRestControllerTests.java
index 53477b5c7..2e89441a6 100644
--- a/spring/src/test/java/io/cloudevents/spring/mvc/MvcRestControllerTests.java
+++ b/spring/src/test/java/io/cloudevents/spring/mvc/MvcRestControllerTests.java
@@ -29,7 +29,7 @@
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
diff --git a/spring/src/test/java/io/cloudevents/spring/webflux/WebFluxRestControllerTests.java b/spring/src/test/java/io/cloudevents/spring/webflux/WebFluxRestControllerTests.java
index 33ec82689..c98f03943 100644
--- a/spring/src/test/java/io/cloudevents/spring/webflux/WebFluxRestControllerTests.java
+++ b/spring/src/test/java/io/cloudevents/spring/webflux/WebFluxRestControllerTests.java
@@ -29,8 +29,8 @@
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.boot.web.codec.CodecCustomizer;
-import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
diff --git a/sql/pom.xml b/sql/pom.xml
index 2b660500e..12e489abe 100644
--- a/sql/pom.xml
+++ b/sql/pom.xml
@@ -15,7 +15,7 @@
io.cloudevents.sql
- 4.9.2
+ 4.9.3
diff --git a/sql/src/test/java/io/cloudevents/sql/asserts/ResultAssert.java b/sql/src/test/java/io/cloudevents/sql/asserts/ResultAssert.java
index 427c1ae1f..f32e0e3b7 100644
--- a/sql/src/test/java/io/cloudevents/sql/asserts/ResultAssert.java
+++ b/sql/src/test/java/io/cloudevents/sql/asserts/ResultAssert.java
@@ -53,7 +53,7 @@ public ObjectAssert