From b247c0a9c6d51f528e332705eb1fd2732b4c6408 Mon Sep 17 00:00:00 2001 From: Adrian Cole <64215+codefromthecrypt@users.noreply.github.com> Date: Sat, 3 Aug 2024 15:50:12 +0800 Subject: [PATCH] Updates to latest docker images, aligning maven version (#125) Signed-off-by: Adrian Cole --- .mvn/wrapper/maven-wrapper.jar | Bin 62547 -> 63028 bytes .mvn/wrapper/maven-wrapper.properties | 6 +- README.md | 28 +-- build-bin/docker-compose.base.yml | 4 +- build-bin/docker/docker-healthcheck | 2 +- build-bin/docker/docker_args | 6 +- build-bin/docker/docker_test_image | 14 +- build-bin/docker_args | 24 +-- build-bin/maven/maven_unjar | 2 +- docker/Dockerfile | 6 +- mvnw | 256 ++++++++++++++------------ mvnw.cmd | 21 ++- parent-pom.xml | 4 +- 13 files changed, 200 insertions(+), 173 deletions(-) diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar index cb28b0e37c7d206feb564310fdeec0927af4123a..7967f30dd1d25fe1b79a4a6e50e2aaa0e425c02c 100644 GIT binary patch delta 17696 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 diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index 346d645..7462052 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -14,5 +14,7 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip -wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar +wrapperVersion=3.3.2 +distributionType=bin +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.8/apache-maven-3.9.8-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar diff --git a/README.md b/README.md index cefd58d..7656984 100644 --- a/README.md +++ b/README.md @@ -36,55 +36,55 @@ There are some interesting details that apply to all examples: Here are the example projects you can try: -* [armeria](armeria) `BRAVE_EXAMPLE=armeria docker-compose up` +* [armeria](armeria) `BRAVE_EXAMPLE=armeria docker compose up` * Runtime: Armeria, SLF4J 1.7, JRE 21 * Trace Instrumentation: [Armeria](https://armeria.dev/), [SLF4J](https://github.com/openzipkin/brave/tree/master/context/slf4j) * Trace Configuration: [Brave API](https://github.com/openzipkin/brave/tree/master/brave#setup) [Java](armeria/src/main/java/brave/example/HttpTracingFactory.java) * You can also use Eureka discovery like this: - * `BRAVE_EXAMPLE=armeria docker-compose -f docker-compose.yml -f docker-compose-eureka.yml up` + * `BRAVE_EXAMPLE=armeria docker compose -f docker-compose.yml -f docker-compose-eureka.yml up` -* [armeria-kafka](armeria-kafka) `BRAVE_EXAMPLE=armeria-kafka docker-compose -f docker-compose.yml -f docker-compose-kafka.yml up` +* [armeria-kafka](armeria-kafka) `BRAVE_EXAMPLE=armeria-kafka docker compose -f docker-compose.yml -f docker-compose-kafka.yml up` * Runtime: Armeria, Kafka Clients and Streams 2.7, SLF4J 1.7, JRE 21 * Trace Instrumentation: [Armeria](https://armeria.dev/), [Kafka Clients](https://github.com/openzipkin/brave/tree/master/instrumentation/kafka-clients), [Kafka Streams](https://github.com/openzipkin/brave/tree/master/instrumentation/kafka-streams), [SLF4J](https://github.com/openzipkin/brave/tree/master/context/slf4j) * Trace Configuration: [Brave API](https://github.com/openzipkin/brave/tree/master/brave#setup) [Java](armeria/src/main/java/brave/example/HttpTracingFactory.java) -* [jersey2-cassandra3](jersey2-cassandra3) `BRAVE_EXAMPLE=jersey2-cassandra3 docker-compose up` +* [jersey2-cassandra3](jersey2-cassandra3) `BRAVE_EXAMPLE=jersey2-cassandra3 docker compose up` * Runtime: JaxRS 2, Jersey 2, DataStax Java Driver 3, Apache Cassandra 4, SLF4J 1, JRE 8 * Trace Instrumentation: [Jersey Server](https://github.com/openzipkin/brave/tree/master/instrumentation/jersey-server), [DataStax Java Driver](https://github.com/openzipkin/brave-cassandra/tree/master/cassandra-driver), [Apache Cassandra](https://github.com/openzipkin/brave-cassandra/tree/master/cassandra), [SLF4J](https://github.com/openzipkin/brave/tree/master/context/slf4j) * Trace Configuration: [Brave API](https://github.com/openzipkin/brave/tree/master/brave#setup) [XML](jersey2-cassandra3/src/main/webapp/WEB-INF/tracing.xml) -* [netty4-grpc](netty4-grpc) `BRAVE_EXAMPLE=netty4-grpc docker-compose up` +* [netty4-grpc](netty4-grpc) `BRAVE_EXAMPLE=netty4-grpc docker compose up` * Runtime: Netty 4.1, Google gRPC 1.63, SLF4J 1.7, JRE 21 * Trace Instrumentation: [Netty Codec HTTP](https://github.com/openzipkin/brave/tree/master/instrumentation/netty-codec-http), [Google gRPC](https://github.com/openzipkin/brave/tree/master/instrumentation/grpc), [SLF4J](https://github.com/openzipkin/brave/tree/master/context/slf4j) * Trace Configuration: [Brave API](https://github.com/openzipkin/brave/tree/master/brave#setup) [Java](netty4-grpc/src/main/java/brave/example/TracingConfiguration.java) -* [webflux5-sleuth](webflux5-sleuth) `BRAVE_EXAMPLE=webflux5-sleuth docker-compose up` +* [webflux5-sleuth](webflux5-sleuth) `BRAVE_EXAMPLE=webflux5-sleuth docker compose up` * Runtime: Spring 5, Reactor Netty 0.9, Spring Boot 2.3, Spring Cloud Sleuth 2.2, Log4J 2.13, JRE 21 * Trace Instrumentation: [WebFlux Server](https://github.com/spring-cloud/spring-cloud-sleuth/blob/2.2.x/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFilter.java), [WebFlux Client](https://github.com/spring-cloud/spring-cloud-sleuth/blob/2.2.x/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebClientBeanPostProcessor.java), [Reactor Context](https://github.com/spring-cloud/spring-cloud-sleuth/blob/2.2.x/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/ScopePassingSpanSubscriber.java), [SLF4J](https://github.com/openzipkin/brave/tree/master/context/slf4j) * Trace Configuration: [Spring Cloud Sleuth](https://github.com/spring-cloud/spring-cloud-sleuth/tree/2.2.x/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig) [Properties](webflux5-sleuth/src/main/resources/application.properties) * You can also use Eureka discovery like this: - * `BRAVE_EXAMPLE=webflux5-sleuth docker-compose -f docker-compose.yml -f docker-compose-eureka.yml up` + * `BRAVE_EXAMPLE=webflux5-sleuth docker compose -f docker-compose.yml -f docker-compose-eureka.yml up` -* [webflux6-micrometer](webflux6-micrometer) `BRAVE_EXAMPLE=webflux6-micrometer docker-compose up` +* [webflux6-micrometer](webflux6-micrometer) `BRAVE_EXAMPLE=webflux6-micrometer docker compose up` * Runtime: Spring 6, Reactor Netty, Spring Boot 3, Micrometer, Log4J 2, JRE 21 * Trace Configuration: [Spring Boot Actuator](https://github.com/spring-projects/spring-boot/blob/3.2.x/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/TracingProperties.java) -* [webmvc25-jetty](webmvc25-jetty) `BRAVE_EXAMPLE=webmvc25-jetty docker-compose up` +* [webmvc25-jetty](webmvc25-jetty) `BRAVE_EXAMPLE=webmvc25-jetty docker compose up` * Runtime: Spring 2.5, Apache HttpClient 4.3, Servlet 2.5, Jetty 7.6, Log4J 1.2, JRE 6 * Trace Instrumentation: [Servlet](https://github.com/openzipkin/brave/tree/master/instrumentation/servlet), [Spring MVC](https://github.com/openzipkin/brave/tree/master/instrumentation/spring-webmvc), [Apache HttpClient](https://github.com/openzipkin/brave/tree/master/instrumentation/httpclient), [Log4J 1.2](https://github.com/openzipkin/brave/tree/master/context/log4j12) * Trace Configuration: [Brave Spring Beans](https://github.com/openzipkin/brave/tree/master/spring-beans#configuration) [XML](webmvc25-jetty/src/main/webapp/WEB-INF/applicationContext.xml) -* [webmvc3-jetty](webmvc3-jetty) `BRAVE_EXAMPLE=webmvc3-jetty docker-compose up` +* [webmvc3-jetty](webmvc3-jetty) `BRAVE_EXAMPLE=webmvc3-jetty docker compose up` * Runtime: Spring 3.2, Apache HttpClient 4.3, Servlet 3.0, Jetty 8.1, Log4J 1.2, JRE 7 * Trace Instrumentation: [Servlet](https://github.com/openzipkin/brave/tree/master/instrumentation/servlet), [Spring MVC](https://github.com/openzipkin/brave/tree/master/instrumentation/spring-webmvc), [Spring Web](https://github.com/openzipkin/brave/tree/master/instrumentation/spring-web), [Apache HttpClient](https://github.com/openzipkin/brave/tree/master/instrumentation/httpclient), [Log4J 1.2](https://github.com/openzipkin/brave/tree/master/context/log4j12) * Trace Configuration: [Brave Spring Beans](https://github.com/openzipkin/brave/tree/master/spring-beans#configuration) [XML](webmvc3-jetty/src/main/webapp/WEB-INF/applicationContext.xml) -* [webmvc4-jetty](webmvc4-jetty) `BRAVE_EXAMPLE=webmvc4-jetty docker-compose up` +* [webmvc4-jetty](webmvc4-jetty) `BRAVE_EXAMPLE=webmvc4-jetty docker compose up` * Runtime: Spring 4.3, OkHttp 3.12, Jetty 9.2, Servlet 3.1, SLF4J 1.7, JRE 8 * Trace Instrumentation: [Servlet](https://github.com/openzipkin/brave/tree/master/instrumentation/servlet), [Spring MVC](https://github.com/openzipkin/brave/tree/master/instrumentation/spring-webmvc), [Spring Web](https://github.com/openzipkin/brave/tree/master/instrumentation/spring-web), [OkHttp](https://github.com/openzipkin/brave/tree/master/instrumentation/okhttp3), [SLF4J](https://github.com/openzipkin/brave/tree/master/context/slf4j) * Trace Configuration: [Brave API](https://github.com/openzipkin/brave/tree/master/brave#setup) [Spring Java Config](webmvc4-jetty/src/main/java/brave/example/TracingConfiguration.java) -* [webmvc4-boot](webmvc4-boot) `BRAVE_EXAMPLE=webmvc4-boot docker-compose up` +* [webmvc4-boot](webmvc4-boot) `BRAVE_EXAMPLE=webmvc4-boot docker compose up` * Runtime: Spring 4.3, OkHttp 3.14, Spring Boot 1.5, Servlet 3.1, Jetty 9.4, SLF4J 1.7, JRE 8 * Trace Instrumentation: [Servlet](https://github.com/openzipkin/brave/tree/master/instrumentation/servlet), [Spring MVC](https://github.com/openzipkin/brave/tree/master/instrumentation/spring-webmvc), [Spring Web](https://github.com/openzipkin/brave/tree/master/instrumentation/spring-web), [OkHttp](https://github.com/openzipkin/brave/tree/master/instrumentation/okhttp3), [SLF4J](https://github.com/openzipkin/brave/tree/master/context/slf4j) * Trace Configuration: [Brave API](https://github.com/openzipkin/brave/tree/master/brave#setup) [Spring Boot AutoConfiguration](webmvc4-boot/src/main/java/brave/example/TracingAutoConfiguration.java) @@ -93,11 +93,11 @@ Here are the example projects you can try: [Docker Compose](https://docs.docker.com/compose/) is the easiest way to start. -Just run `docker-compose up`. +Just run `docker compose up`. Armeria starts by default. To use a different version of the project, set the `VERSION` variable. -Ex. `VERSION=webmvc25-jetty docker-compose up` +Ex. `VERSION=webmvc25-jetty docker compose up` ## Starting the services from source diff --git a/build-bin/docker-compose.base.yml b/build-bin/docker-compose.base.yml index 6a07ad6..8805d8c 100644 --- a/build-bin/docker-compose.base.yml +++ b/build-bin/docker-compose.base.yml @@ -7,7 +7,7 @@ version: "2.4" services: sut: container_name: sut - image: ghcr.io/openzipkin/alpine:3.19.1 + image: ghcr.io/openzipkin/alpine:3.20.2 entrypoint: /bin/sh # Keep the container running until HEALTHCHECK passes command: "-c \"sleep 5m\"" @@ -16,7 +16,7 @@ services: test: wget -qO- --spider http://zipkin:9411/api/v2/trace/cafebabecafebabe get_frontend: container_name: get_frontend - image: ghcr.io/openzipkin/alpine:3.19.1 + image: ghcr.io/openzipkin/alpine:3.20.2 entrypoint: /bin/sh # Pass a trace header with a constant trace ID, so that we know what to look for later command: "-c \"wget -qO- --header 'b3: cafebabecafebabe-cafebabecafebabe-1' http://frontend:8081\"" diff --git a/build-bin/docker/docker-healthcheck b/build-bin/docker/docker-healthcheck index eca38ca..e89306a 100755 --- a/build-bin/docker/docker-healthcheck +++ b/build-bin/docker/docker-healthcheck @@ -4,7 +4,7 @@ # SPDX-License-Identifier: Apache-2.0 # -# HEALTHCHECK for use in `docker ps`, `docker-compose ps`, or a readiness probe in k8s. +# HEALTHCHECK for use in `docker ps`, `docker compose ps`, or a readiness probe in k8s. # # The following variables are read from ENV in the Dockerfile or env readable from pid 1. # * HEALTHCHECK_KIND - must be "http" or "tcp". Defaults to "http" diff --git a/build-bin/docker/docker_args b/build-bin/docker/docker_args index f59c577..93c3d97 100755 --- a/build-bin/docker/docker_args +++ b/build-bin/docker/docker_args @@ -37,7 +37,7 @@ if [ -n "${DOCKER_TARGET}" ]; then fi # When non-empty, becomes the layer that builds the maven projects. -# e.g. ghcr.io/openzipkin/java:11.0.23_p9 +# e.g. ghcr.io/openzipkin/java:11.0.24_p8 # # This must include maven and a full JDK. if [ -n "${DOCKER_BUILD_IMAGE}" ]; then @@ -45,7 +45,7 @@ if [ -n "${DOCKER_BUILD_IMAGE}" ]; then fi # When non-empty, becomes the base layer including tag appropriate for the image being built. -# e.g. ghcr.io/openzipkin/java:21.0.3_p9-jre +# e.g. ghcr.io/openzipkin/java:21.0.4_p7-jre # # This is not required to be a base (FROM scratch) image like ghcr.io/openzipkin/alpine:3.12.3 # See https://docs.docker.com/glossary/#parent-image @@ -59,7 +59,7 @@ if [ -n "${ALPINE_VERSION}" ]; then docker_args="${docker_args} --build-arg alpine_version=${ALPINE_VERSION}" fi -# When non-empty, becomes the build-arg java_version. e.g. "21.0.3_p9" +# When non-empty, becomes the build-arg java_version. e.g. "21.0.4_p7" # Used to align base layers from https://github.com/orgs/openzipkin/packages/container/package/java if [ -n "${JAVA_VERSION}" ]; then docker_args="${docker_args} --build-arg java_version=${JAVA_VERSION}" diff --git a/build-bin/docker/docker_test_image b/build-bin/docker/docker_test_image index fad9da0..062ced7 100755 --- a/build-bin/docker/docker_test_image +++ b/build-bin/docker/docker_test_image @@ -11,16 +11,16 @@ set -ue -# export this variable so that docker-compose can use it +# export this variable so that docker compose can use it export DOCKER_IMAGE=${1?full docker_tag is required. Ex openzipkin/zipkin:test} -# The two options are to run a single container of the image, or docker-compose which includes it. +# The two options are to run a single container of the image, or docker compose which includes it. docker_compose_file=${2:-build-bin/docker-compose-$(echo ${DOCKER_IMAGE}| sed 's~.*/\(.*\):.*~\1~g').yml} docker_container=${3:-sut} # First try to run the intended containers. health_rc=0 if test -f "${docker_compose_file}"; then - docker-compose -f "${docker_compose_file}" up --remove-orphans -d --quiet-pull || health_rc=1 + docker compose -f "${docker_compose_file}" up --remove-orphans -d --quiet-pull || health_rc=1 else docker run --name ${docker_container} -d ${DOCKER_IMAGE} || health_rc=1 fi @@ -30,13 +30,13 @@ fi if [ "${health_rc}" = "1" ] || ! build-bin/docker/docker_block_on_health ${docker_container}; then >&2 echo "*** Failed waiting for health of ${docker_container}" - # Sadly, we can't `docker-compose inspect`. This means we may not see the inspect output of the - # container that failed in docker-compose until this is revised to work around compose/issues/4155 + # Sadly, we can't `docker compose inspect`. This means we may not see the inspect output of the + # container that failed in docker compose until this is revised to work around compose/issues/4155 docker inspect --format='{{json .State.Health.Log}}' ${docker_container} || true # Log any containers output to console before we remove them. if test -f "${docker_compose_file}"; then - docker-compose -f "${docker_compose_file}" logs + docker compose -f "${docker_compose_file}" logs else docker logs ${docker_container} || true fi @@ -45,7 +45,7 @@ fi # Clean up any containers, so that we can run this again without conflict. if test -f "${docker_compose_file}"; then - docker-compose -f "${docker_compose_file}" down + docker compose -f "${docker_compose_file}" down else docker kill ${docker_container} && docker rm ${docker_container} fi diff --git a/build-bin/docker_args b/build-bin/docker_args index 5ee80c3..8eba5e1 100755 --- a/build-bin/docker_args +++ b/build-bin/docker_args @@ -8,38 +8,38 @@ else exit 1 fi -JAVA_VERSION=${JAVA_VERSION:-21.0.3_p9} +JAVA_VERSION=${JAVA_VERSION:-21.0.4_p7} # DOCKER_ARCHS to eventually push to the registry DOCKER_ARCHS="amd64 arm64" case "${JRE_VERSION}" in 6 ) - DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:11.0.23_p9 + DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:11.0.24_p8 DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:1.6.0-119 # single arch image DOCKER_ARCHS=amd64 ;; 7 ) - DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:11.0.23_p9 - DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:1.7.0_285 + DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:11.0.24_p8 + DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:1.7.0_352 # single arch image DOCKER_ARCHS=amd64 ;; 8 ) - DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:11.0.23_p9 - DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:8.392.08-jre + DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:11.0.24_p8 + DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:8.402.06-jre ;; 11 ) - DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:11.0.23_p9 - DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:11.0.23_p9-jre + DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:11.0.24_p8 + DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:11.0.24_p8-jre ;; 17 ) - DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:21.0.3_p9 - DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:17.0.11_p9-jre + DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:21.0.4_p7 + DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:17.0.12_p7-jre ;; 21 ) - DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:21.0.3_p9 - DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:21.0.3_p9-jre + DOCKER_BUILD_IMAGE=ghcr.io/openzipkin/java:21.0.4_p7 + DOCKER_PARENT_IMAGE=ghcr.io/openzipkin/java:21.0.4_p7-jre ;; * ) echo "Invalid JRE_VERSION: ${JRE_VERSION}" diff --git a/build-bin/maven/maven_unjar b/build-bin/maven/maven_unjar index 624742c..6d95f79 100755 --- a/build-bin/maven/maven_unjar +++ b/build-bin/maven/maven_unjar @@ -58,7 +58,7 @@ fi if ! test -f ${artifact_id}.jar && [ ${is_release} = "true" ]; then mvn_get="mvn -q --batch-mode -Denforcer.fail=false \ - org.apache.maven.plugins:maven-dependency-plugin:3.6.1:get \ + org.apache.maven.plugins:maven-dependency-plugin:3.7.1:get \ -Dtransitive=false -DgroupId=${group_id} -DartifactId=${artifact_id} -Dversion=${version}" if [ -n "${classifier}" ]; then diff --git a/docker/Dockerfile b/docker/Dockerfile index 6281d41..1b9d2e4 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -2,12 +2,12 @@ # non-root users and such as they are not intended to run in production anyway. # The image binaries this example builds are installed over -ARG docker_parent_image=ghcr.io/openzipkin/java:21.0.3_p9 +ARG docker_parent_image=ghcr.io/openzipkin/java:21.0.4_p7 ## Use JDK 11 to build projects, as that can still compile Java 6 -ARG docker_build_image=ghcr.io/openzipkin/java:11.0.23_p9 +ARG docker_build_image=ghcr.io/openzipkin/java:11.0.24_p8 # We copy files from the context into a scratch container first to avoid a problem where docker and -# docker-compose don't share layer hashes https://github.com/docker/compose/issues/883 normally. +# docker compose don't share layer hashes https://github.com/docker/compose/issues/883 normally. # COPY --from= works around the issue. FROM scratch as scratch diff --git a/mvnw b/mvnw index 8d937f4..5e9618c 100755 --- a/mvnw +++ b/mvnw @@ -19,7 +19,7 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.2.0 +# Apache Maven Wrapper startup batch script, version 3.3.2 # # Required ENV vars: # ------------------ @@ -33,75 +33,84 @@ # MAVEN_SKIP_RC - flag to disable loading of mavenrc files # ---------------------------------------------------------------------------- -if [ -z "$MAVEN_SKIP_RC" ] ; then +if [ -z "$MAVEN_SKIP_RC" ]; then - if [ -f /usr/local/etc/mavenrc ] ; then + if [ -f /usr/local/etc/mavenrc ]; then . /usr/local/etc/mavenrc fi - if [ -f /etc/mavenrc ] ; then + if [ -f /etc/mavenrc ]; then . /etc/mavenrc fi - if [ -f "$HOME/.mavenrc" ] ; then + if [ -f "$HOME/.mavenrc" ]; then . "$HOME/.mavenrc" fi fi # OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=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 - JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME - else - JAVA_HOME="/Library/Java/Home"; export JAVA_HOME - fi +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 + JAVA_HOME="$(/usr/libexec/java_home)" + export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home" + export JAVA_HOME fi - ;; + fi + ;; esac -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then JAVA_HOME=$(java-config --jre-home) fi fi # For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$JAVA_HOME" ] && - JAVA_HOME=$(cygpath --unix "$JAVA_HOME") - [ -n "$CLASSPATH" ] && - CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +if $cygwin; then + [ -n "$JAVA_HOME" ] \ + && JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] \ + && CLASSPATH=$(cygpath --path --unix "$CLASSPATH") fi # For Mingw, ensure paths are in UNIX format before anything is touched -if $mingw ; then - [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && - JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +if $mingw; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] \ + && JAVA_HOME="$( + cd "$JAVA_HOME" || ( + echo "cannot cd into $JAVA_HOME." >&2 + exit 1 + ) + pwd + )" fi if [ -z "$JAVA_HOME" ]; then javaExecutable="$(which javac)" - if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + 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" + if $darwin; then + javaHome="$(dirname "$javaExecutable")" + javaExecutable="$(cd "$javaHome" && pwd -P)/javac" else - javaExecutable="$(readlink -f "\"$javaExecutable\"")" + javaExecutable="$(readlink -f "$javaExecutable")" fi - javaHome="$(dirname "\"$javaExecutable\"")" + javaHome="$(dirname "$javaExecutable")" javaHome=$(expr "$javaHome" : '\(.*\)/bin') JAVA_HOME="$javaHome" export JAVA_HOME @@ -109,52 +118,60 @@ if [ -z "$JAVA_HOME" ]; then fi fi -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then +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="$(\unset -f command 2>/dev/null; \command -v java)" + JAVACMD="$( + \unset -f command 2>/dev/null + \command -v java + )" fi fi -if [ ! -x "$JAVACMD" ] ; then +if [ ! -x "$JAVACMD" ]; then echo "Error: JAVA_HOME is not defined correctly." >&2 echo " We cannot execute $JAVACMD" >&2 exit 1 fi -if [ -z "$JAVA_HOME" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." >&2 fi # traverses directory structure from process work directory to filesystem root # first directory with .mvn subdirectory is considered project base directory find_maven_basedir() { - if [ -z "$1" ] - then - echo "Path not specified to find_maven_basedir" + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" >&2 return 1 fi basedir="$1" wdir="$1" - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then basedir=$wdir break fi # workaround for JBEAP-8937 (on Solaris 10/Sparc) if [ -d "${wdir}" ]; then - wdir=$(cd "$wdir/.." || exit 1; pwd) + wdir=$( + cd "$wdir/.." || exit 1 + pwd + ) fi # end of workaround done - printf '%s' "$(cd "$basedir" || exit 1; pwd)" + printf '%s' "$( + cd "$basedir" || exit 1 + pwd + )" } # concatenates all lines of a file @@ -165,7 +182,7 @@ concat_lines() { # enabled. Otherwise, we may read lines that are delimited with # \r\n and produce $'-Xarg\r' rather than -Xarg due to word # splitting rules. - tr -s '\r\n' ' ' < "$1" + tr -s '\r\n' ' ' <"$1" fi } @@ -177,10 +194,11 @@ log() { BASE_DIR=$(find_maven_basedir "$(dirname "$0")") if [ -z "$BASE_DIR" ]; then - exit 1; + exit 1 fi -MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +export MAVEN_PROJECTBASEDIR log "$MAVEN_PROJECTBASEDIR" ########################################################################################## @@ -189,63 +207,66 @@ log "$MAVEN_PROJECTBASEDIR" ########################################################################################## wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" if [ -r "$wrapperJarPath" ]; then - log "Found $wrapperJarPath" + log "Found $wrapperJarPath" else - log "Couldn't find $wrapperJarPath, downloading it ..." + log "Couldn't find $wrapperJarPath, downloading it ..." - if [ -n "$MVNW_REPOURL" ]; then - wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in wrapperUrl) + wrapperUrl="$safeValue" + break + ;; + esac + done <"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" else - wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" fi - while IFS="=" read -r key value; do - # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) - safeValue=$(echo "$value" | tr -d '\r') - case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; - esac - done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" - log "Downloading from: $wrapperUrl" - + elif command -v curl >/dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac if $cygwin; then - wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") fi - - if command -v wget > /dev/null; then - log "Found wget ... using wget" - [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" - if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" - else - wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" - fi - elif command -v curl > /dev/null; then - log "Found curl ... using curl" - [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" - if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" - else - curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" - fi - else - log "Falling back to using Java to download" - javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" - javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" - # For Cygwin, switch paths to Windows format before running javac - if $cygwin; then - javaSource=$(cygpath --path --windows "$javaSource") - javaClass=$(cygpath --path --windows "$javaClass") - fi - if [ -e "$javaSource" ]; then - if [ ! -e "$javaClass" ]; then - log " - Compiling MavenWrapperDownloader.java ..." - ("$JAVA_HOME/bin/javac" "$javaSource") - fi - if [ -e "$javaClass" ]; then - log " - Running MavenWrapperDownloader.java ..." - ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" - fi - fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi fi + fi fi ########################################################################################## # End of extension @@ -254,22 +275,25 @@ fi # If specified, validate the SHA-256 sum of the Maven wrapper jar file wrapperSha256Sum="" while IFS="=" read -r key value; do - case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + case "$key" in wrapperSha256Sum) + wrapperSha256Sum=$value + break + ;; esac -done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +done <"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" if [ -n "$wrapperSha256Sum" ]; then wrapperSha256Result=false - if command -v sha256sum > /dev/null; then - if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + if command -v sha256sum >/dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c >/dev/null 2>&1; then wrapperSha256Result=true fi - elif command -v shasum > /dev/null; then - if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + elif command -v shasum >/dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c >/dev/null 2>&1; then wrapperSha256Result=true fi else - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." - echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." >&2 exit 1 fi if [ $wrapperSha256Result = false ]; then @@ -284,12 +308,12 @@ 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 "$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") + [ -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") fi # Provide a "standardized" way to retrieve the CLI args that will diff --git a/mvnw.cmd b/mvnw.cmd index c4586b5..4136715 100644 --- a/mvnw.cmd +++ b/mvnw.cmd @@ -18,7 +18,7 @@ @REM ---------------------------------------------------------------------------- @REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM Apache Maven Wrapper startup batch script, version 3.3.2 @REM @REM Required ENV vars: @REM JAVA_HOME - location of a JDK home dir @@ -59,22 +59,22 @@ set ERROR_CODE=0 @REM ==== START VALIDATION ==== if not "%JAVA_HOME%" == "" goto OkJHome -echo. +echo. >&2 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. +echo. >&2 goto error :OkJHome if exist "%JAVA_HOME%\bin\java.exe" goto init -echo. +echo. >&2 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. +echo. >&2 goto error @REM ==== END VALIDATION ==== @@ -119,7 +119,7 @@ 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 WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B @@ -133,7 +133,7 @@ if exist %WRAPPER_JAR% ( ) ) else ( if not "%MVNW_REPOURL%" == "" ( - SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar" ) if "%MVNW_VERBOSE%" == "true" ( echo Couldn't find %WRAPPER_JAR%, downloading it ... @@ -160,11 +160,12 @@ FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapp ) IF NOT %WRAPPER_SHA_256_SUM%=="" ( powershell -Command "&{"^ + "Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash;"^ "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ - " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ - " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ - " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " Write-Error 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Error 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Error 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ " exit 1;"^ "}"^ "}" diff --git a/parent-pom.xml b/parent-pom.xml index 7d3d389..bbbf901 100644 --- a/parent-pom.xml +++ b/parent-pom.xml @@ -45,8 +45,8 @@ 1.2.8 3.13.0 - 3.6.1 - 3.4.0 + 3.7.1 + 3.4.1 3.4.1 3.4.0