@@ -337,7 +337,7 @@ private Path bazelOutputBase(Path bazelWorkspaceRoot) {
337337 String [] command = {
338338 "bazel" , "info" , "output_base" ,
339339 };
340- var output = fork (bazelWorkspaceRoot , command );
340+ var output = fork (bazelWorkspaceRoot , command , false );
341341 if (output == NOT_FOUND ) {
342342 return NOT_FOUND ;
343343 }
@@ -354,20 +354,21 @@ private void bazelDryRunBuild(Path bazelWorkspaceRoot, Set<String> targets) {
354354 var command = new ArrayList <String >();
355355 command .add ("bazel" );
356356 command .add ("build" );
357+ command .add ("--keep_going" );
357358 command .add ("--nobuild" );
358359 command .addAll (targets );
359360 String [] c = new String [command .size ()];
360361 c = command .toArray (c );
361- var output = fork (bazelWorkspaceRoot , c );
362+ var output = fork (bazelWorkspaceRoot , c , true );
362363 if (output == NOT_FOUND ) {
363364 return ;
364365 }
365366 return ;
366367 }
367368
368369 private Set <String > bazelQuery (Path bazelWorkspaceRoot , String filterKind ) {
369- String [] command = {"bazel" , "query" , "kind(" + filterKind + ",//...)" };
370- var output = fork (bazelWorkspaceRoot , command );
370+ String [] command = {"bazel" , "query" , "--keep_going" , " kind(" + filterKind + ",//...)" };
371+ var output = fork (bazelWorkspaceRoot , command , true );
371372 if (output == NOT_FOUND ) {
372373 return Set .of ();
373374 }
@@ -401,13 +402,14 @@ private Set<String> bazelAQuery(
401402 String [] command = {
402403 "bazel" ,
403404 "aquery" ,
405+ "--keep_going" ,
404406 "--output=proto" ,
405407 "--include_aspects" , // required for java_proto_library, see
406408 // https://stackoverflow.com/questions/63430530/bazel-aquery-returns-no-action-information-for-java-proto-library
407409 "--allow_analysis_failures" ,
408410 "mnemonic(" + filterMnemonic + ", " + kindUnion + ")"
409411 };
410- var output = fork (bazelWorkspaceRoot , command );
412+ var output = fork (bazelWorkspaceRoot , command , true );
411413 if (output == NOT_FOUND ) {
412414 return Set .of ();
413415 }
@@ -509,7 +511,7 @@ private static String buildPath(List<PathFragment> fragments, int id) {
509511 throw new RuntimeException ();
510512 }
511513
512- private static Path fork (Path workspaceRoot , String [] command ) {
514+ private static Path fork (Path workspaceRoot , String [] command , boolean allowNonZeroExit ) {
513515 try {
514516 LOG .info ("Running " + String .join (" " , command ) + " ..." );
515517 var output = Files .createTempFile ("java-language-server-bazel-output" , ".proto" );
@@ -524,7 +526,9 @@ private static Path fork(Path workspaceRoot, String[] command) {
524526 var result = process .waitFor ();
525527 if (result != 0 ) {
526528 LOG .severe ("`" + String .join (" " , command ) + "` returned " + result );
527- return NOT_FOUND ;
529+ if (!allowNonZeroExit ) {
530+ return NOT_FOUND ;
531+ }
528532 }
529533 return output ;
530534 } catch (InterruptedException | IOException e ) {
0 commit comments