@@ -28,7 +28,8 @@ import groovy.json.JsonOutput
2828def base_path = " .."
2929
3030def overrides (versions , type , base_path ) {
31- versions. collect { " ${ base_path} /${ it} /src/${ type} /java" } + [" ./src/${ type} /java" ]
31+ // order is important
32+ [" ${ base_path} /src/${ type} /java" ] + versions. collect { " ${ base_path} /${ it} /src/${ type} /java" } + [" ./src/${ type} /java" ]
3233}
3334
3435def all_versions = flink_versions. split(" ," )
@@ -49,7 +50,8 @@ applyJavaNature(
4950 automaticModuleName : ' org.apache.beam.runners.flink' ,
5051 archivesBaseName : archivesBaseName,
5152 // flink runner jars are in same package name. Publish javadoc once.
52- exportJavadoc : project. ext. flink_version. startsWith(all_versions. first())
53+ exportJavadoc : project. ext. flink_version. startsWith(all_versions. first()),
54+ requireJavaVersion : project. ext. flink_major. startsWith(' 2' ) ? JavaVersion . VERSION_11 : null
5355)
5456
5557description = " Apache Beam :: Runners :: Flink $flink_version "
@@ -68,10 +70,16 @@ evaluationDependsOn(":examples:java")
6870 */
6971def sourceOverridesBase = project. layout. buildDirectory. dir(' source-overrides/src' ). get()
7072
71- def copySourceOverrides = tasks. register(' copySourceOverrides' , Copy ) {
72- it. from main_source_overrides
73- it. into " ${ sourceOverridesBase} /main/java"
74- it. duplicatesStrategy DuplicatesStrategy . INCLUDE
73+ def copySourceOverrides = tasks. register(' copySourceOverrides' , Copy ) { copyTask ->
74+ copyTask. from main_source_overrides
75+ copyTask. into " ${ sourceOverridesBase} /main/java"
76+ copyTask. duplicatesStrategy DuplicatesStrategy . INCLUDE
77+
78+ if (project. ext. has(' excluded_files' ) && project. ext. excluded_files. containsKey(' main' )) {
79+ project. ext. excluded_files. main. each { file ->
80+ copyTask. exclude " **/${ file} "
81+ }
82+ }
7583}
7684
7785def copyResourcesOverrides = tasks. register(' copyResourcesOverrides' , Copy ) {
@@ -80,10 +88,16 @@ def copyResourcesOverrides = tasks.register('copyResourcesOverrides', Copy) {
8088 it. duplicatesStrategy DuplicatesStrategy . INCLUDE
8189}
8290
83- def copyTestSourceOverrides = tasks. register(' copyTestSourceOverrides' , Copy ) {
84- it. from test_source_overrides
85- it. into " ${ sourceOverridesBase} /test/java"
86- it. duplicatesStrategy DuplicatesStrategy . INCLUDE
91+ def copyTestSourceOverrides = tasks. register(' copyTestSourceOverrides' , Copy ) { copyTask ->
92+ copyTask. from test_source_overrides
93+ copyTask. into " ${ sourceOverridesBase} /test/java"
94+ copyTask. duplicatesStrategy DuplicatesStrategy . INCLUDE
95+
96+ if (project. ext. has(' excluded_files' ) && project. ext. excluded_files. containsKey(' test' )) {
97+ project. ext. excluded_files. test. each { file ->
98+ copyTask. exclude " **/${ file} "
99+ }
100+ }
87101}
88102
89103def copyTestResourcesOverrides = tasks. register(' copyTestResourcesOverrides' , Copy ) {
@@ -92,45 +106,69 @@ def copyTestResourcesOverrides = tasks.register('copyTestResourcesOverrides', Co
92106 it. duplicatesStrategy DuplicatesStrategy . INCLUDE
93107}
94108
95- // add dependency to gradle Java plugin defined tasks
96- compileJava. dependsOn copySourceOverrides
97- processResources. dependsOn copyResourcesOverrides
98- compileTestJava. dependsOn copyTestSourceOverrides
99- processTestResources. dependsOn copyTestResourcesOverrides
100-
101- // add dependency BeamModulePlugin defined custom tasks
102- // they are defined only when certain flags are provided (e.g. -Prelease; -Ppublishing, etc)
103- def sourcesJar = project. tasks. findByName(' sourcesJar' )
104- if (sourcesJar != null ) {
105- sourcesJar. dependsOn copySourceOverrides
106- sourcesJar. dependsOn copyResourcesOverrides
107- }
108- def testSourcesJar = project. tasks. findByName(' testSourcesJar' )
109- if (testSourcesJar != null ) {
110- testSourcesJar. dependsOn copyTestSourceOverrides
111- testSourcesJar. dependsOn copyTestResourcesOverrides
112- }
109+ def use_override = (flink_major != all_versions. first())
110+ def sourceBase = " ${ project.projectDir} /../src"
113111
114- /*
112+ if (use_override) {
113+ // Copy original+version specific sources to a tmp dir and use it as sourceSet
114+ // add dependency to gradle Java plugin defined tasks
115+ compileJava. dependsOn copySourceOverrides
116+ processResources. dependsOn copyResourcesOverrides
117+ compileTestJava. dependsOn copyTestSourceOverrides
118+ processTestResources. dependsOn copyTestResourcesOverrides
119+
120+ // add dependency BeamModulePlugin defined custom tasks
121+ // they are defined only when certain flags are provided (e.g. -Prelease; -Ppublishing, etc)
122+ def sourcesJar = project. tasks. findByName(' sourcesJar' )
123+ if (sourcesJar != null ) {
124+ sourcesJar. dependsOn copySourceOverrides
125+ sourcesJar. dependsOn copyResourcesOverrides
126+ }
127+ def testSourcesJar = project. tasks. findByName(' testSourcesJar' )
128+ if (testSourcesJar != null ) {
129+ testSourcesJar. dependsOn copyTestSourceOverrides
130+ testSourcesJar. dependsOn copyTestResourcesOverrides
131+ }
132+ /*
115133 * We have to explicitly set all directories here to make sure each
116134 * version of Flink has the correct overrides set.
117135 */
118- def sourceBase = " ${ project.projectDir} /../src"
119- sourceSets {
120- main {
121- java {
122- srcDirs = [" ${ sourceBase} /main/java" , " ${ sourceOverridesBase} /main/java" ]
136+ sourceSets {
137+ main {
138+ java {
139+ srcDirs = [" ${ sourceOverridesBase} /main/java" ]
140+ }
141+ resources {
142+ srcDirs = [" ${ sourceBase} /main/resources" , " ${ sourceOverridesBase} /main/resources" ]
143+ }
123144 }
124- resources {
125- srcDirs = [" ${ sourceBase} /main/resources" , " ${ sourceOverridesBase} /main/resources" ]
145+ test {
146+ java {
147+ srcDirs = [" ${ sourceOverridesBase} /test/java" ]
148+ }
149+ resources {
150+ srcDirs = [" ${ sourceBase} /test/resources" , " ${ sourceOverridesBase} /test/resources" ]
151+ }
126152 }
127153 }
128- test {
129- java {
130- srcDirs = [" ${ sourceBase} /test/java" , " ${ sourceOverridesBase} /test/java" ]
154+ } else {
155+ // Use the original sources directly for the lowest supported Flink version.
156+ sourceSets {
157+ main {
158+ java {
159+ srcDirs = [" ${ sourceBase} /main/java" ]
160+ }
161+ resources {
162+ srcDirs = [" ${ sourceBase} /main/resources" ]
163+ }
131164 }
132- resources {
133- srcDirs = [" ${ sourceBase} /test/resources" , " ${ sourceOverridesBase} /test/resources" ]
165+ test {
166+ java {
167+ srcDirs = [" ${ sourceBase} /test/java" ]
168+ }
169+ resources {
170+ srcDirs = [" ${ sourceBase} /test/resources" ]
171+ }
134172 }
135173 }
136174}
@@ -196,7 +234,10 @@ dependencies {
196234
197235 implementation " org.apache.flink:flink-core:$flink_version "
198236 implementation " org.apache.flink:flink-metrics-core:$flink_version "
199- implementation " org.apache.flink:flink-java:$flink_version "
237+ if (project. ext. flink_major. startsWith(' 1' )) {
238+ // FLINK-36336: dataset API removed in Flink 2
239+ implementation " org.apache.flink:flink-java:$flink_version "
240+ }
200241
201242 implementation " org.apache.flink:flink-runtime:$flink_version "
202243 implementation " org.apache.flink:flink-metrics-core:$flink_version "
0 commit comments