This is an automated email from the ASF dual-hosted git repository.

martijnvisser pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 997b48340d2 [FLINK-36181] Use Java 17 by default (#25898)
997b48340d2 is described below

commit 997b48340d2aac1de48c0788b4204d660e34cedd
Author: Martijn Visser <2989614+martijnvis...@users.noreply.github.com>
AuthorDate: Wed Jan 15 12:25:25 2025 +0100

    [FLINK-36181] Use Java 17 by default (#25898)
    
    * [FLINK-36181] Set CI to use Java 17 by default and drop Java 8
    
    * [FLINK-36181] Update main POM to use Java 17
    
    * [FLINK-36181] Bump Scala to 2.12.20
    
    This is a breaking change for Flink 2.0, and allows us to next remove the 
specific Scala versions for both Java 17 and 21
    
    * [FLINK-36181] Build Dockerfiles with Java 17 by default
    
    * [FLINK-36181] Remove Scala version bump for Java11 and Java17 profiles
    
    Since we've bumped Scala all together, we no longer need to bump it for 
these profiles
    
    * [FLINK-36181] Add Java11 target profile
    
    * [FLINK-36181] Set CI to have a dedicated Java11 cron
    
    * [FLINK-36181] Update README
    
    * [FLINK-36181] Make sure that JDK11 APIs can be used
    
    * [FLINK-36181] Improve README
    
    * [FLINK-36181] Address review comment on configurable Java version
    
    * [FLINK-36181] Remove no longer required specific Scala parameters
---
 .github/workflows/ci.yml                           |  6 +--
 .github/workflows/nightly.yml                      | 21 +++--------
 .github/workflows/template.flink-ci.yml            |  2 +-
 .github/workflows/template.pre-compile-checks.yml  |  4 +-
 README.md                                          | 37 ++++++++++++++++--
 azure-pipelines.yml                                |  4 +-
 .../src/main/resources/META-INF/NOTICE             |  8 ++--
 .../test-scripts/common_docker.sh                  |  4 +-
 flink-rpc/flink-rpc-akka/pom.xml                   |  2 -
 .../src/main/resources/META-INF/NOTICE             |  6 +--
 pom.xml                                            | 44 ++++++++++++++--------
 tools/azure-pipelines/build-apache-repo.yml        | 30 +++++++--------
 12 files changed, 100 insertions(+), 68 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index b0de9840bf5..d8834a4fe46 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -29,11 +29,11 @@ jobs:
     name: "Pre-compile Checks"
     uses: ./.github/workflows/template.pre-compile-checks.yml
   ci:
-    name: "Default (Java 11)"
+    name: "Default (Java 17)"
     uses: ./.github/workflows/template.flink-ci.yml
     with:
-      environment: 'PROFILE="-Dinclude_hadoop_aws"'
-      jdk_version: 11
+      environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk17 -Pjava17-target"'
+      jdk_version: 17
     secrets:
       s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }}
       s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }}
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 3686a29c820..08d27bce06f 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -39,23 +39,12 @@ jobs:
       s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }}
       s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }}
       s3_secret_key: ${{ secrets.IT_CASE_S3_SECRET_KEY }}
-  java17:
-    name: "Java 17"
-    uses: ./.github/workflows/template.flink-ci.yml
-    with:
-      workflow-caller-id: java17
-      environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk11 -Djdk17 
-Pjava17-target"'
-      jdk_version: 17
-    secrets:
-      s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }}
-      s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }}
-      s3_secret_key: ${{ secrets.IT_CASE_S3_SECRET_KEY }}
   java21:
     name: "Java 21"
     uses: ./.github/workflows/template.flink-ci.yml
     with:
       workflow-caller-id: java21
-      environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk11 -Djdk17 -Djdk21 
-Pjava21-target"'
+      environment: 'PROFILE="-Dinclude_hadoop_aws -Djdk21 -Pjava21-target"'
       jdk_version: 21
     secrets:
       s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }}
@@ -66,8 +55,8 @@ jobs:
     uses: ./.github/workflows/template.flink-ci.yml
     with:
       workflow-caller-id: hadoop313
-      environment: 'PROFILE="-Dflink.hadoop.version=3.2.3 
-Phadoop3-tests,hive3"'
-      jdk_version: 11
+      environment: 'PROFILE="-Dflink.hadoop.version=3.2.3 
-Phadoop3-tests,hive3 -Djdk17 -Pjava17-target"'
+      jdk_version: 17
     secrets:
       s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }}
       s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }}
@@ -77,8 +66,8 @@ jobs:
     uses: ./.github/workflows/template.flink-ci.yml
     with:
       workflow-caller-id: adaptive-scheduler
-      environment: 'PROFILE="-Penable-adaptive-scheduler"'
-      jdk_version: 11
+      environment: 'PROFILE="-Penable-adaptive-scheduler -Djdk17 
-Pjava17-target"'
+      jdk_version: 17
     secrets:
       s3_bucket: ${{ secrets.IT_CASE_S3_BUCKET }}
       s3_access_key: ${{ secrets.IT_CASE_S3_ACCESS_KEY }}
diff --git a/.github/workflows/template.flink-ci.yml 
b/.github/workflows/template.flink-ci.yml
index 85cc4843125..40e7758e7cc 100644
--- a/.github/workflows/template.flink-ci.yml
+++ b/.github/workflows/template.flink-ci.yml
@@ -30,7 +30,7 @@ on:
         type: string
       jdk_version:
         description: "The Java version to use."
-        default: 11
+        default: 17
         type: number
     secrets:
       s3_bucket:
diff --git a/.github/workflows/template.pre-compile-checks.yml 
b/.github/workflows/template.pre-compile-checks.yml
index 430d7763d23..3eac3819d4d 100644
--- a/.github/workflows/template.pre-compile-checks.yml
+++ b/.github/workflows/template.pre-compile-checks.yml
@@ -23,7 +23,7 @@ on:
     inputs:
       jdk_version:
         description: "The JDK version that shall be used as a default within 
the Flink CI Docker container."
-        default: "11"
+        default: "17"
         type: choice
         options: ["11", "17", "21"]
 
@@ -31,7 +31,7 @@ on:
     inputs:
       jdk_version:
         description: "The JDK version that shall be used as a default within 
the Flink CI Docker container."
-        default: 11
+        default: 17
         type: number
 
 permissions: read-all
diff --git a/README.md b/README.md
index 7f6d767101c..de7257f2a35 100644
--- a/README.md
+++ b/README.md
@@ -104,15 +104,46 @@ Prerequisites for building Flink:
 * Unix-like environment (we use Linux, Mac OS X, Cygwin, WSL)
 * Git
 * Maven (we require version 3.8.6)
-* Java 11
+* Java (version 11, 17, or 21)
+
+### Basic Build Instructions
+
+First, clone the repository:
 
 ```
 git clone https://github.com/apache/flink.git
 cd flink
-./mvnw clean package -DskipTests # this will take up to 10 minutes
 ```
 
-Flink is now installed in `build-target`.
+Then, choose one of the following commands based on your preferred Java 
version:
+
+**For Java 11**
+
+```
+./mvnw clean package -DskipTests -Djdk11 -Pjava11-target
+```
+
+**For Java 17 (Default)**
+
+```
+./mvnw clean package -DskipTests -Djdk17 -Pjava17-target
+```
+
+**For Java 21**
+
+```
+./mvnw clean package -DskipTests -Djdk21 -Pjava21-target
+```
+
+The build process will take approximately 10 minutes to complete.
+Flink will be installed in `build-target`.
+
+### Notes
+
+* Make sure your JAVA_HOME environment variable points to the correct JDK 
version
+* The build command uses Maven wrapper (mvnw) which ensures the correct Maven 
version is used
+* The -DskipTests flag skips running tests to speed up the build process
+* Each Java version requires its corresponding profile 
(-Pjava<version>-target) and JDK flag (-Djdk<version>)
 
 ## Developing Flink
 
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 9a97855a70f..ebc7e5289d5 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -76,10 +76,10 @@ stages:
             vmImage: 'ubuntu-22.04'
           e2e_pool_definition:
             vmImage: 'ubuntu-22.04'
-          environment: PROFILE="-Dflink.hadoop.version=2.10.2"
+          environment: PROFILE="-Dflink.hadoop.version=2.10.2 -Djdk17 
-Pjava17-target"
           run_end_to_end: false
           container: flink-build-container
-          jdk: 11
+          jdk: 17
       - job: docs_404_check # run on a MSFT provided machine
         pool:
           vmImage: 'ubuntu-22.04'
diff --git a/flink-dist-scala/src/main/resources/META-INF/NOTICE 
b/flink-dist-scala/src/main/resources/META-INF/NOTICE
index df24d4019e1..563a4034d3c 100644
--- a/flink-dist-scala/src/main/resources/META-INF/NOTICE
+++ b/flink-dist-scala/src/main/resources/META-INF/NOTICE
@@ -10,7 +10,7 @@ This project bundles the following dependencies under the 
Apache Software Licens
 
 The following dependencies all share the same BSD license which you find under 
licenses/LICENSE.scala.
 
-- org.scala-lang:scala-compiler:2.12.7
-- org.scala-lang:scala-library:2.12.7
-- org.scala-lang:scala-reflect:2.12.7
-- org.scala-lang.modules:scala-xml_2.12:1.0.6
+- org.scala-lang:scala-compiler:2.12.20
+- org.scala-lang:scala-library:2.12.20
+- org.scala-lang:scala-reflect:2.12.20
+- org.scala-lang.modules:scala-xml_2.12:2.3.0
diff --git a/flink-end-to-end-tests/test-scripts/common_docker.sh 
b/flink-end-to-end-tests/test-scripts/common_docker.sh
index 49a0abad354..d4ddbec669b 100644
--- a/flink-end-to-end-tests/test-scripts/common_docker.sh
+++ b/flink-end-to-end-tests/test-scripts/common_docker.sh
@@ -46,10 +46,10 @@ function build_image() {
     start_file_server
     local server_pid=$!
 
-    echo "Preparing Dockeriles"
+    echo "Preparing Dockerfiles"
     retry_times_with_exponential_backoff 5 git clone 
https://github.com/apache/flink-docker.git --branch dev-master --single-branch
 
-    local java_version=11
+    local java_version=17
     if [[ ${PROFILE} == *"jdk17"* ]]; then
         java_version=17
     fi
diff --git a/flink-rpc/flink-rpc-akka/pom.xml b/flink-rpc/flink-rpc-akka/pom.xml
index 2f2f3ef4a65..9660b6ad995 100644
--- a/flink-rpc/flink-rpc-akka/pom.xml
+++ b/flink-rpc/flink-rpc-akka/pom.xml
@@ -38,8 +38,6 @@ under the License.
 
        <properties>
                <pekko.version>1.1.2</pekko.version>
-               <scala.binary.version>2.12</scala.binary.version>
-               <scala.version>2.12.16</scala.version>
        </properties>
 
        <dependencies>
diff --git 
a/flink-table/flink-table-planner-loader-bundle/src/main/resources/META-INF/NOTICE
 
b/flink-table/flink-table-planner-loader-bundle/src/main/resources/META-INF/NOTICE
index 5e8b1f4c0e5..35ac48aecea 100644
--- 
a/flink-table/flink-table-planner-loader-bundle/src/main/resources/META-INF/NOTICE
+++ 
b/flink-table/flink-table-planner-loader-bundle/src/main/resources/META-INF/NOTICE
@@ -6,6 +6,6 @@ The Apache Software Foundation (http://www.apache.org/).
 
 The following dependencies all share the same BSD license which you find under 
licenses/LICENSE.scala.
 
-- org.scala-lang:scala-compiler:2.12.7
-- org.scala-lang:scala-library:2.12.7
-- org.scala-lang:scala-reflect:2.12.7
+- org.scala-lang:scala-compiler:2.12.20
+- org.scala-lang:scala-library:2.12.20
+- org.scala-lang:scala-reflect:2.12.20
diff --git a/pom.xml b/pom.xml
index b04a3aefc03..2d6c9933d1b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -124,7 +124,8 @@ under the License.
                
<flink.shaded.jackson.version>2.15.3</flink.shaded.jackson.version>
                
<flink.shaded.jsonpath.version>2.7.0</flink.shaded.jsonpath.version>
                <flink.markBundledAsOptional>true</flink.markBundledAsOptional>
-               <target.java.version>11</target.java.version>
+               <source.java.version>11</source.java.version>
+               <target.java.version>17</target.java.version>
                <slf4j.version>1.7.36</slf4j.version>
                <log4j.version>2.24.1</log4j.version>
                <!-- Overwrite default values from parent pom.
@@ -133,9 +134,7 @@ under the License.
                
<maven.compiler.source>${target.java.version}</maven.compiler.source>
                
<maven.compiler.target>${target.java.version}</maven.compiler.target>
                <scala.macros.version>2.1.1</scala.macros.version>
-               <!-- Default scala versions, must be overwritten by build 
profiles, so we set something
-               invalid here -->
-               <scala.version>2.12.7</scala.version>
+               <scala.version>2.12.20</scala.version>
                <scala.binary.version>2.12</scala.binary.version>
                <chill.version>0.7.6</chill.version>
                <!-- keep 
FlinkTestcontainersConfigurator.configureZookeeperContainer in sync -->
@@ -944,7 +943,7 @@ under the License.
                <profile>
                        <id>scala-2.12</id>
                        <properties>
-                               <scala.version>2.12.7</scala.version>
+                               <scala.version>2.12.20</scala.version>
                                
<scala.binary.version>2.12</scala.binary.version>
                        </properties>
                        <activation>
@@ -1064,6 +1063,27 @@ under the License.
                        </build>
                </profile>
 
+               <profile>
+                       <id>java11-target</id>
+
+                       <properties>
+                               <target.java.version>11</target.java.version>
+                       </properties>
+
+                       <build>
+                               <plugins>
+                                       <plugin>
+                                               
<groupId>org.apache.maven.plugins</groupId>
+                                               
<artifactId>maven-compiler-plugin</artifactId>
+                                               <configuration>
+                                                       <source>11</source>
+                                                       <target>11</target>
+                                               </configuration>
+                                       </plugin>
+                               </plugins>
+                       </build>
+               </profile>
+
                <profile>
                        <id>java17</id>
                        <activation>
@@ -1071,8 +1091,6 @@ under the License.
                        </activation>
 
                        <properties>
-                               <!-- Bump Scala because 2.12.7 doesn't compile 
on Java 17. -->
-                               <scala.version>2.12.15</scala.version>
                                
<surefire.excludedGroups.jdk>org.apache.flink.testutils.junit.FailsOnJava17</surefire.excludedGroups.jdk>
                        </properties>
 
@@ -1128,11 +1146,6 @@ under the License.
                                <jdk>[21,)</jdk>
                        </activation>
 
-                       <properties>
-                               <!-- Bump Scala because before 2.12.18 doesn't 
compile on Java 21. -->
-                               <scala.version>2.12.18</scala.version>
-                       </properties>
-
                        <build>
                                <pluginManagement>
                                        <plugins>
@@ -1386,7 +1399,7 @@ under the License.
                                </property>
                        </activation>
                        <properties>
-                               <target.java.version>11</target.java.version>
+                               <target.java.version>17</target.java.version>
                        </properties>
                        <build>
                                <plugins>
@@ -1418,7 +1431,7 @@ under the License.
                                                                                
<!-- versions for certain build tools are enforced to match the CI setup -->
                                                                                
<!-- the rules below should stay in sync with Flink Release wiki documentation 
and the CI scripts -->
                                                                                
<requireJavaVersion>
-                                                                               
        <version>[11.0.0,11.1.0)</version>
+                                                                               
        <version>[${target.java.version}.*)</version>
                                                                                
</requireJavaVersion>
                                                                        </rules>
                                                                </configuration>
@@ -2075,7 +2088,8 @@ under the License.
                                        
<artifactId>maven-compiler-plugin</artifactId>
                                        <version>3.8.0</version>
                                        <configuration>
-                                               
<source>${target.java.version}</source>
+                                               <!-- Make sure that we only use 
Java 11 compatible APIs -->
+                                               
<source>${source.java.version}</source>
                                                
<target>${target.java.version}</target>
                                                <!-- The semantics of this 
option are reversed, see MCOMPILER-209. -->
                                                
<useIncrementalCompilation>false</useIncrementalCompilation>
diff --git a/tools/azure-pipelines/build-apache-repo.yml 
b/tools/azure-pipelines/build-apache-repo.yml
index 5df8ced01c8..9c0c880c453 100644
--- a/tools/azure-pipelines/build-apache-repo.yml
+++ b/tools/azure-pipelines/build-apache-repo.yml
@@ -69,10 +69,10 @@ stages:
             name: Default
           e2e_pool_definition:
             vmImage: 'ubuntu-22.04'
-          environment: PROFILE="-Dflink.hadoop.version=2.10.2 -Djdk11 
-Pjava11-target"
+          environment: PROFILE="-Dflink.hadoop.version=2.10.2 -Djdk17 
-Pjava17-target"
           run_end_to_end: false
           container: flink-build-container
-          jdk: 11
+          jdk: 17
       - job: docs_404_check # run on a MSFT provided machine
         pool:
           vmImage: 'ubuntu-22.04'
@@ -103,9 +103,9 @@ stages:
       - template: build-nightly-dist.yml
         parameters:
           stage_name: cron_snapshot_deployment
-          environment: PROFILE="-Djdk11 -Pjava11-target"
+          environment: PROFILE="-Djdk17 -Pjava17-target"
           container: flink-build-container
-          jdk: 11
+          jdk: 17
       - template: jobs-template.yml
         parameters:
           stage_name: cron_azure
@@ -113,10 +113,10 @@ stages:
             vmImage: 'ubuntu-22.04'
           e2e_pool_definition:
             vmImage: 'ubuntu-22.04'
-          environment: PROFILE="-Dflink.hadoop.version=2.10.2 -Djdk11 
-Pjava11-target"
+          environment: PROFILE="-Dflink.hadoop.version=2.10.2 -Djdk17 
-Pjava17-target"
           run_end_to_end: true
           container: flink-build-container
-          jdk: 11
+          jdk: 17
       - template: jobs-template.yml
         parameters:
           stage_name: cron_hadoop313
@@ -124,21 +124,21 @@ stages:
             name: Default
           e2e_pool_definition:
             vmImage: 'ubuntu-22.04'
-          environment: PROFILE="-Dflink.hadoop.version=3.2.3 
-Phadoop3-tests,hive3 -Djdk11 -Pjava11-target"
+          environment: PROFILE="-Dflink.hadoop.version=3.2.3 
-Phadoop3-tests,hive3 -Djdk17 -Pjava17-target"
           run_end_to_end: true
           container: flink-build-container
-          jdk: 11
+          jdk: 17
       - template: jobs-template.yml
         parameters:
-          stage_name: cron_jdk17
+          stage_name: cron_jdk11
           test_pool_definition:
             name: Default
           e2e_pool_definition:
             vmImage: 'ubuntu-22.04'
-          environment: PROFILE="-Dflink.hadoop.version=2.10.2 -Djdk11 -Djdk17 
-Pjava17-target"
+          environment: PROFILE="-Dflink.hadoop.version=2.10.2 -Djdk11 
-Pjava11-target"
           run_end_to_end: true
           container: flink-build-container
-          jdk: 17
+          jdk: 11
       - template: jobs-template.yml
         parameters:
           stage_name: cron_jdk21
@@ -146,7 +146,7 @@ stages:
             name: Default
           e2e_pool_definition:
             vmImage: 'ubuntu-22.04'
-          environment: PROFILE="-Dflink.hadoop.version=2.10.2 -Djdk11 -Djdk17 
-Djdk21 -Pjava21-target"
+          environment: PROFILE="-Dflink.hadoop.version=2.10.2 -Djdk21 
-Pjava21-target"
           run_end_to_end: true
           container: flink-build-container
           jdk: 21
@@ -157,10 +157,10 @@ stages:
             name: Default
           e2e_pool_definition:
             vmImage: 'ubuntu-22.04'
-          environment: PROFILE="-Dflink.hadoop.version=2.10.2 
-Penable-adaptive-scheduler -Djdk11 -Pjava11-target"
+          environment: PROFILE="-Dflink.hadoop.version=2.10.2 
-Penable-adaptive-scheduler -Djdk17 -Pjava17-target"
           run_end_to_end: true
           container: flink-build-container
-          jdk: 11
+          jdk: 17
       - job: docs_404_check # run on a MSFT provided machine
         pool:
           vmImage: 'ubuntu-22.04'
@@ -172,5 +172,5 @@ stages:
       - template: build-python-wheels.yml
         parameters:
           stage_name: cron_python_wheels
-          environment: PROFILE="-Dflink.hadoop.version=2.10.2"
+          environment: PROFILE="-Dflink.hadoop.version=2.10.2 -Djdk17 
-Pjava17-target"
           container: flink-build-container

Reply via email to