@@ -92,8 +92,7 @@ task '//java/test/org/openqa/selenium/environment/webserver:webserver:uber' => [
9292 '//java/test/org/openqa/selenium/environment:webserver'
9393]
9494
95- # Java targets required for release. These should all be java_export targets.
96- # Generated from: bazel query 'kind(maven_publish, set(//java/... //third_party/...))' | sort
95+ # use #java_release_targets to access this list
9796JAVA_RELEASE_TARGETS = %w[
9897 //java/src/org/openqa/selenium/chrome:chrome.publish
9998 //java/src/org/openqa/selenium/chromium:chromium.publish
@@ -119,6 +118,34 @@ JAVA_RELEASE_TARGETS = %w[
119118 //java/src/org/openqa/selenium:core.publish
120119] . freeze
121120
121+ def java_release_targets
122+ @targets_verified ||= verify_java_release_targets
123+
124+ JAVA_RELEASE_TARGETS
125+ end
126+
127+ def verify_java_release_targets
128+ query = 'kind(maven_publish, set(//java/... //third_party/...))'
129+ current_targets = [ ]
130+
131+ Bazel . execute ( 'query' , [ ] , query ) do |output |
132+ current_targets = output . lines . map ( &:strip ) . reject ( &:empty? )
133+ end
134+
135+ missing_targets = current_targets - JAVA_RELEASE_TARGETS
136+ extra_targets = JAVA_RELEASE_TARGETS - current_targets
137+
138+ return if missing_targets . empty? && extra_targets . empty?
139+
140+ error_message = 'Java release targets are out of sync with Bazel query results.'
141+
142+ error_message += "\n Missing targets: #{ missing_targets . join ( ', ' ) } " unless missing_targets . empty?
143+
144+ error_message += "\n Obsolete targets: #{ extra_targets . join ( ', ' ) } " unless extra_targets . empty?
145+
146+ raise error_message
147+ end
148+
122149# Notice that because we're using rake, anything you can do in a normal rake
123150# build can also be done here. For example, here we set the default task
124151task default : [ :grid ]
363390
364391desc 'Install jars to local m2 directory'
365392task :'maven-install' do
366- JAVA_RELEASE_TARGETS . each do |p |
393+ java_release_targets . each do |p |
367394 Bazel . execute ( 'run' ,
368395 [ '--stamp' ,
369396 '--define' ,
@@ -825,7 +852,7 @@ namespace :java do
825852 desc 'Build Java Client Jars'
826853 task :build do |_task , arguments |
827854 args = arguments . to_a . compact
828- JAVA_RELEASE_TARGETS . each { |target | Bazel . execute ( 'build' , args , target ) }
855+ java_release_targets . each { |target | Bazel . execute ( 'build' , args , target ) }
829856 end
830857
831858 desc 'Build Grid Server'
@@ -872,7 +899,7 @@ namespace :java do
872899 Rake ::Task [ 'java:package' ] . invoke ( '--config=release' )
873900 Rake ::Task [ 'java:build' ] . invoke ( '--config=release' )
874901 # Because we want to `run` things, we can't use the `release` config
875- JAVA_RELEASE_TARGETS . each { |target | Bazel . execute ( 'run' , [ '--config=release' ] , target ) }
902+ java_release_targets . each { |target | Bazel . execute ( 'run' , [ '--config=release' ] , target ) }
876903 end
877904
878905 desc 'Install jars to local m2 directory'
0 commit comments