diff --git a/.env b/.env index 877bd50864d..aba11f972f5 100644 --- a/.env +++ b/.env @@ -65,7 +65,7 @@ JDK=8 KARTOTHEK=latest # LLVM 12 and GCC 11 reports -Wmismatched-new-delete. LLVM=14 -MAVEN=3.6.3 +MAVEN=3.8.7 NODE=18 NUMBA=latest NUMPY=latest diff --git a/ci/docker/conda-integration.dockerfile b/ci/docker/conda-integration.dockerfile index 074021677d6..8406a419c06 100644 --- a/ci/docker/conda-integration.dockerfile +++ b/ci/docker/conda-integration.dockerfile @@ -20,7 +20,7 @@ ARG arch=amd64 FROM ${repo}:${arch}-conda-cpp ARG arch=amd64 -ARG maven=3.5 +ARG maven=3.8.7 ARG node=16 ARG yarn=1.22 ARG jdk=8 diff --git a/ci/docker/conda-python-hdfs.dockerfile b/ci/docker/conda-python-hdfs.dockerfile index c7b01edf8c2..fa4fa0d1fb7 100644 --- a/ci/docker/conda-python-hdfs.dockerfile +++ b/ci/docker/conda-python-hdfs.dockerfile @@ -21,7 +21,7 @@ ARG python=3.8 FROM ${repo}:${arch}-conda-python-${python} ARG jdk=8 -ARG maven=3.5 +ARG maven=3.8.7 RUN mamba install -q -y \ maven=${maven} \ openjdk=${jdk} \ diff --git a/ci/docker/conda-python-jpype.dockerfile b/ci/docker/conda-python-jpype.dockerfile index 0e7fecf0362..d9b43afdaec 100644 --- a/ci/docker/conda-python-jpype.dockerfile +++ b/ci/docker/conda-python-jpype.dockerfile @@ -21,7 +21,7 @@ ARG python=3.8 FROM ${repo}:${arch}-conda-python-${python} ARG jdk=11 -ARG maven=3.6 +ARG maven=3.8.7 RUN mamba install -q -y \ maven=${maven} \ openjdk=${jdk} \ diff --git a/ci/docker/conda-python-spark.dockerfile b/ci/docker/conda-python-spark.dockerfile index 221c8409924..866f6f37f8b 100644 --- a/ci/docker/conda-python-spark.dockerfile +++ b/ci/docker/conda-python-spark.dockerfile @@ -21,7 +21,7 @@ ARG python=3.8 FROM ${repo}:${arch}-conda-python-${python} ARG jdk=8 -ARG maven=3.5 +ARG maven=3.8.7 ARG numpy=latest COPY ci/scripts/install_numpy.sh /arrow/ci/scripts/ diff --git a/ci/docker/linux-apt-docs.dockerfile b/ci/docker/linux-apt-docs.dockerfile index 5ac39424ed5..76b5ae6f143 100644 --- a/ci/docker/linux-apt-docs.dockerfile +++ b/ci/docker/linux-apt-docs.dockerfile @@ -61,7 +61,7 @@ RUN apt-get update -y && \ ENV JAVA_HOME=/usr/lib/jvm/java-${jdk}-openjdk-amd64 -ARG maven=3.6.3 +ARG maven=3.8.7 COPY ci/scripts/util_download_apache.sh /arrow/ci/scripts/ RUN /arrow/ci/scripts/util_download_apache.sh \ "maven/maven-3/${maven}/binaries/apache-maven-${maven}-bin.tar.gz" /opt diff --git a/dev/release/verify-release-candidate.sh b/dev/release/verify-release-candidate.sh index 08b3feac13e..d74ce1f6706 100755 --- a/dev/release/verify-release-candidate.sh +++ b/dev/release/verify-release-candidate.sh @@ -20,8 +20,8 @@ # Requirements # - Ruby >= 2.3 -# - Maven >= 3.3.9 -# - JDK >=7 +# - Maven >= 3.8.7 +# - JDK >=8 # - gcc >= 4.8 # - Node.js >= 18 # - Go >= 1.19 @@ -499,6 +499,44 @@ maybe_setup_conda() { fi } +install_maven() { + MAVEN_VERSION=3.8.7 + if command -v mvn > /dev/null; then + SYSTEM_MAVEN_VERSION=$(mvn -v | head -n 1 | awk '{print $3}') + show_info "Found Maven version ${SYSTEM_MAVEN_VERSION} at $(command -v mvn)." + else + SYSTEM_MAVEN_VERSION=0.0.0 + show_info "Maven installation not found." + fi + + if [[ "$MAVEN_VERSION" == "$SYSTEM_MAVEN_VERSION" ]]; then + show_info "System Maven version ${SYSTEM_MAVEN_VERSION} matches required Maven version ${MAVEN_VERSION}. Skipping installation." + else + # Append pipe character to make preview release versions like "X.Y.Z-beta-1" sort + # as older than their corresponding release version "X.Y.Z". This works because + # `sort -V` orders the pipe character lower than any version number character. + older_version=$(printf '%s\n%s\n' "$SYSTEM_MAVEN_VERSION" "$MAVEN_VERSION" | sed 's/$/|/' | sort -V | sed 's/|$//' | head -n1) + if [[ "$older_version" == "$SYSTEM_MAVEN_VERSION" ]]; then + show_info "Installing Maven version ${MAVEN_VERSION}..." + APACHE_MIRROR="https://www.apache.org/dyn/closer.lua?action=download&filename=" + curl -sL -o apache-maven-${MAVEN_VERSION}-bin.tar.gz \ + ${APACHE_MIRROR}/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz + tar xzf apache-maven-${MAVEN_VERSION}-bin.tar.gz + export PATH=$(pwd)/apache-maven-${MAVEN_VERSION}/bin:$PATH + show_info "Installed Maven version $(mvn -v | head -n 1 | awk '{print $3}')" + else + show_info "System Maven version ${SYSTEM_MAVEN_VERSION} is newer than minimum version ${MAVEN_VERSION}. Skipping installation." + fi + fi +} + +maybe_setup_maven() { + show_info "Ensuring that Maven is installed..." + if [ "${USE_CONDA}" -eq 0 ]; then + install_maven + fi +} + maybe_setup_virtualenv() { # Optionally setup pip virtualenv with the passed dependencies local env="venv-${VENV_ENV:-source}" @@ -565,6 +603,7 @@ maybe_setup_nodejs() { test_package_java() { show_header "Build and test Java libraries" + maybe_setup_maven maybe_setup_conda maven openjdk pushd java @@ -1202,6 +1241,8 @@ test_wheels() { test_jars() { show_header "Testing Java JNI jars" + + maybe_setup_maven maybe_setup_conda maven python local download_dir=${ARROW_TMPDIR}/jars diff --git a/java/maven/module-info-compiler-maven-plugin/pom.xml b/java/maven/module-info-compiler-maven-plugin/pom.xml index 37d14ad412d..d4e68c07c2b 100644 --- a/java/maven/module-info-compiler-maven-plugin/pom.xml +++ b/java/maven/module-info-compiler-maven-plugin/pom.xml @@ -30,7 +30,7 @@ - 3.3.9 + 3.8.7