@@ -189,11 +189,6 @@ CurrentTarget: {current_target}
189
189
indirect_targets = indirect_targets ,
190
190
current_target = current_target )
191
191
192
- if unused_dependency_checker_mode != "off" :
193
- fail (
194
- "Using both --strict_java_deps and unused-dependency-checker at the same time is not allowed"
195
- )
196
-
197
192
elif unused_dependency_checker_mode != "off" :
198
193
unused_dependency_plugin = ctx .attr ._unused_dependency_checker_plugin
199
194
plugins = depset (transitive = [plugins , unused_dependency_plugin .files ])
@@ -380,6 +375,11 @@ def _compile_or_empty(
380
375
java_srcs = [
381
376
f for f in ctx .files .srcs if f .basename .endswith (_java_extension )
382
377
]
378
+ # We are not able to verify whether dependencies are used when compiling java sources
379
+ # Thus we disable unused dependency checking when java sources are found
380
+ if len (java_srcs ) != 0 :
381
+ unused_dependency_checker_mode = "off"
382
+
383
383
sources = [
384
384
f for f in ctx .files .srcs if f .basename .endswith (_scala_extension )
385
385
] + java_srcs
@@ -578,7 +578,8 @@ def _collect_jars_from_common_ctx(ctx,
578
578
jars2labels = jars2labels ,
579
579
transitive_compile_jars = transitive_compile_jars )
580
580
581
- def _lib (ctx , base_classpath , non_macro_lib , unused_dependency_checker_mode ):
581
+ def _lib (ctx , base_classpath , non_macro_lib , unused_dependency_checker_mode ,
582
+ unused_dependency_checker_ignored_targets ):
582
583
# Build up information from dependency-like attributes
583
584
584
585
# This will be used to pick up srcjars from non-scala library
@@ -604,7 +605,8 @@ def _lib(ctx, base_classpath, non_macro_lib, unused_dependency_checker_mode):
604
605
jars .jars2labels .jars_to_labels , [],
605
606
unused_dependency_checker_mode = unused_dependency_checker_mode ,
606
607
unused_dependency_checker_ignored_targets = [
607
- target .label for target in base_classpath
608
+ target .label for target in base_classpath + ctx .attr .exports +
609
+ unused_dependency_checker_ignored_targets
608
610
])
609
611
610
612
transitive_rjars = depset (outputs .full_jars , transitive = [transitive_rjars ])
@@ -655,15 +657,17 @@ def scala_library_impl(ctx):
655
657
scalac_provider = ctx .attr ._scala_provider [_ScalacProvider ]
656
658
unused_dependency_checker_mode = get_unused_dependency_checker_mode (ctx )
657
659
return _lib (ctx , scalac_provider .default_classpath , True ,
658
- unused_dependency_checker_mode )
660
+ unused_dependency_checker_mode ,
661
+ ctx .attr .unused_dependency_checker_ignored_targets )
659
662
660
663
def scala_library_for_plugin_bootstrapping_impl (ctx ):
661
664
scalac_provider = ctx .attr ._scala_provider [_ScalacProvider ]
662
665
return _lib (
663
666
ctx ,
664
667
scalac_provider .default_classpath ,
665
668
True ,
666
- unused_dependency_checker_mode = "off" )
669
+ unused_dependency_checker_mode = "off" ,
670
+ unused_dependency_checker_ignored_targets = [])
667
671
668
672
def scala_macro_library_impl (ctx ):
669
673
scalac_provider = ctx .attr ._scala_provider [_ScalacProvider ]
@@ -672,7 +676,8 @@ def scala_macro_library_impl(ctx):
672
676
ctx ,
673
677
scalac_provider .default_macro_classpath ,
674
678
False , # don't build the ijar for macros
675
- unused_dependency_checker_mode )
679
+ unused_dependency_checker_mode ,
680
+ ctx .attr .unused_dependency_checker_ignored_targets )
676
681
677
682
# Common code shared by all scala binary implementations.
678
683
def _scala_binary_common (
@@ -750,7 +755,8 @@ def scala_binary_impl(ctx):
750
755
wrapper ,
751
756
unused_dependency_checker_mode = unused_dependency_checker_mode ,
752
757
unused_dependency_checker_ignored_targets = [
753
- target .label for target in scalac_provider .default_classpath
758
+ target .label for target in scalac_provider .default_classpath +
759
+ ctx .attr .unused_dependency_checker_ignored_targets
754
760
])
755
761
_write_executable (
756
762
ctx = ctx ,
@@ -801,7 +807,8 @@ trap finish EXIT
801
807
wrapper ,
802
808
unused_dependency_checker_mode = unused_dependency_checker_mode ,
803
809
unused_dependency_checker_ignored_targets = [
804
- target .label for target in scalac_provider .default_repl_classpath
810
+ target .label for target in scalac_provider .default_repl_classpath +
811
+ ctx .attr .unused_dependency_checker_ignored_targets
805
812
])
806
813
_write_executable (
807
814
ctx = ctx ,
@@ -831,7 +838,8 @@ def scala_test_impl(ctx):
831
838
832
839
unused_dependency_checker_mode = get_unused_dependency_checker_mode (ctx )
833
840
unused_dependency_checker_ignored_targets = [
834
- target .label for target in scalac_provider .default_classpath
841
+ target .label for target in scalac_provider .default_classpath +
842
+ ctx .attr .unused_dependency_checker_ignored_targets
835
843
]
836
844
unused_dependency_checker_is_off = unused_dependency_checker_mode == "off"
837
845
@@ -919,7 +927,11 @@ def scala_junit_test_impl(ctx):
919
927
920
928
unused_dependency_checker_mode = get_unused_dependency_checker_mode (ctx )
921
929
unused_dependency_checker_ignored_targets = [
922
- target .label for target in scalac_provider .default_classpath
930
+ target .label for target in scalac_provider .default_classpath +
931
+ ctx .attr .unused_dependency_checker_ignored_targets
932
+ ] + [
933
+ ctx .attr ._junit .label , ctx .attr ._hamcrest .label ,
934
+ ctx .attr .suite_label .label , ctx .attr ._bazel_test_runner .label
923
935
]
924
936
unused_dependency_checker_is_off = unused_dependency_checker_mode == "off"
925
937
0 commit comments