@@ -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
@@ -120,6 +119,34 @@ JAVA_RELEASE_TARGETS = %w[
120119 //java/src/org/openqa/selenium:core.publish
121120] . freeze
122121
122+ def java_release_targets
123+ @targets_verified ||= verify_java_release_targets
124+
125+ JAVA_RELEASE_TARGETS
126+ end
127+
128+ def verify_java_release_targets
129+ query = 'kind(maven_publish, set(//java/... //third_party/...))'
130+ current_targets = [ ]
131+
132+ Bazel . execute ( 'query' , [ ] , query ) do |output |
133+ current_targets = output . lines . map ( &:strip ) . reject ( &:empty? )
134+ end
135+
136+ missing_targets = current_targets - JAVA_RELEASE_TARGETS
137+ extra_targets = JAVA_RELEASE_TARGETS - current_targets
138+
139+ return if missing_targets . empty? && extra_targets . empty?
140+
141+ error_message = 'Java release targets are out of sync with Bazel query results.'
142+
143+ error_message += "\n Missing targets: #{ missing_targets . join ( ', ' ) } " unless missing_targets . empty?
144+
145+ error_message += "\n Obsolete targets: #{ extra_targets . join ( ', ' ) } " unless extra_targets . empty?
146+
147+ raise error_message
148+ end
149+
123150# Notice that because we're using rake, anything you can do in a normal rake
124151# build can also be done here. For example, here we set the default task
125152task default : [ :grid ]
364391
365392desc 'Install jars to local m2 directory'
366393task :'maven-install' do
367- JAVA_RELEASE_TARGETS . each do |p |
394+ java_release_targets . each do |p |
368395 Bazel . execute ( 'run' ,
369396 [ '--stamp' ,
370397 '--define' ,
@@ -826,7 +853,7 @@ namespace :java do
826853 desc 'Build Java Client Jars'
827854 task :build do |_task , arguments |
828855 args = arguments . to_a . compact
829- JAVA_RELEASE_TARGETS . each { |target | Bazel . execute ( 'build' , args , target ) }
856+ java_release_targets . each { |target | Bazel . execute ( 'build' , args , target ) }
830857 end
831858
832859 desc 'Build Grid Server'
@@ -873,7 +900,7 @@ namespace :java do
873900 Rake ::Task [ 'java:package' ] . invoke ( '--config=release' )
874901 Rake ::Task [ 'java:build' ] . invoke ( '--config=release' )
875902 # Because we want to `run` things, we can't use the `release` config
876- JAVA_RELEASE_TARGETS . each { |target | Bazel . execute ( 'run' , [ '--config=release' ] , target ) }
903+ java_release_targets . each { |target | Bazel . execute ( 'run' , [ '--config=release' ] , target ) }
877904 end
878905
879906 desc 'Install jars to local m2 directory'
@@ -894,14 +921,14 @@ namespace :java do
894921
895922 file_path = 'MODULE.bazel'
896923 content = File . read ( file_path )
897- output = nil
898- Bazel . execute ( 'run' , [ ] , '@maven//:outdated' ) do |out |
899- output = out
900- end
924+ output = nil
925+ Bazel . execute ( 'run' , [ ] , '@maven//:outdated' ) do |out |
926+ output = out
927+ end
901928
902929 versions = output . scan ( /(\S +) \[ \S + -> (\S +)\] / ) . to_h
903930 versions . each do |artifact , version |
904- content . sub! ( /#{ Regexp . escape ( artifact ) } :([\d \. \ - ]+(?:[-.]?[A-Za-z0-9]+)*)/ , "#{ artifact } :#{ version } " )
931+ content . sub! ( /#{ Regexp . escape ( artifact ) } :([\d . -]+(?:[-.]?[A-Za-z0-9]+)*)/ , "#{ artifact } :#{ version } " )
905932 end
906933 File . write ( file_path , content )
907934
0 commit comments