Enable Strict Java Deps and reduced classpaths by default

This change is intended to be a no-op: all uses of these classes should
be overriding the defaults. The goal of this change is to make it harder
to accidentally disable these features when new uses of these classes
are introduced.

PiperOrigin-RevId: 214890036
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index 4692485..f744607 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -136,10 +136,8 @@
   /** The subset of classpath jars provided by direct dependencies. */
   private final NestedSet<Artifact> directJars;
 
-  /**
-   * The level of strict dependency checks (off, warnings, or errors).
-   */
-  private final BuildConfiguration.StrictDepsMode strictJavaDeps;
+  /** The level of strict dependency checks (off, warnings, or errors). */
+  private final StrictDepsMode strictJavaDeps;
 
   /** The tool with which to fix dependency errors. */
   private final String fixDepsTool;
@@ -302,7 +300,7 @@
   }
 
   @VisibleForTesting
-  public BuildConfiguration.StrictDepsMode getStrictJavaDepsMode() {
+  public StrictDepsMode getStrictJavaDepsMode() {
     return strictJavaDeps;
   }
 
@@ -436,8 +434,10 @@
     private Artifact artifactForExperimentalCoverage;
     private ImmutableSet<Artifact> sourceFiles = ImmutableSet.of();
     private final Collection<Artifact> sourceJars = new ArrayList<>();
-    private BuildConfiguration.StrictDepsMode strictJavaDeps =
-        BuildConfiguration.StrictDepsMode.OFF;
+
+    /** @see {@link #setStrictJavaDeps}. */
+    private StrictDepsMode strictJavaDeps = StrictDepsMode.ERROR;
+
     private String fixDepsTool = "add_dep";
     private NestedSet<Artifact> directJars = NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER);
     private NestedSet<Artifact> compileTimeDependencyArtifacts =
@@ -504,7 +504,7 @@
 
       // Invariant: if strictJavaDeps is OFF, then directJars and
       // dependencyArtifacts are ignored
-      if (strictJavaDeps == BuildConfiguration.StrictDepsMode.OFF) {
+      if (strictJavaDeps == StrictDepsMode.OFF) {
         directJars = NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER);
         compileTimeDependencyArtifacts = NestedSetBuilder.emptySet(Order.STABLE_ORDER);
       }
@@ -723,7 +723,7 @@
 
       // strict_java_deps controls whether the mapping from jars to targets is
       // written out and whether we try to minimize the compile-time classpath.
-      if (strictJavaDeps != BuildConfiguration.StrictDepsMode.OFF) {
+      if (strictJavaDeps != StrictDepsMode.OFF) {
         result.add("--strict_java_deps", strictJavaDeps.toString());
         result.addExecPaths("--direct_dependencies", directJars);
 
@@ -870,9 +870,11 @@
 
     /**
      * Sets the strictness of Java dependency checking, see {@link
-     * com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsMode}.
+     * com.google.devtools.build.lib.analysis.config.StrictDepsMode}.
+     *
+     * <p>Defaults to {@link StrictDepsMode#ERROR}.
      */
-    public Builder setStrictJavaDeps(BuildConfiguration.StrictDepsMode strictDeps) {
+    public Builder setStrictJavaDeps(StrictDepsMode strictDeps) {
       strictJavaDeps = strictDeps;
       return this;
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
index 37929cb..c25936f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
@@ -56,8 +56,11 @@
   private JavaPluginInfoProvider plugins = JavaPluginInfoProvider.empty();
   private ImmutableList<String> javacOpts = ImmutableList.of();
   private ImmutableList<Artifact> sourcePathEntries = ImmutableList.of();
-  private StrictDepsMode strictDepsMode = StrictDepsMode.OFF;
-  private JavaClasspathMode classpathMode = JavaClasspathMode.OFF;
+
+  /** @see {@link #setCompilationStrictDepsMode}. */
+  private StrictDepsMode strictDepsMode = StrictDepsMode.ERROR;
+
+  private final JavaClasspathMode classpathMode;
   private String injectingRuleKind;
   private boolean neverlink;
 
@@ -167,6 +170,8 @@
    * <p>Contrast this with the strictness-parameter to {@link #buildCompilationArgsProvider}, which
    * controls whether others depending on the result of this compilation, can perform strict-deps
    * checks at all.
+   *
+   * <p>Defaults to {@link StrictDepsMode#ERROR}.
    */
   public JavaLibraryHelper setCompilationStrictDepsMode(StrictDepsMode strictDepsMode) {
     this.strictDepsMode = strictDepsMode;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaTargetAttributes.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaTargetAttributes.java
index a30127f..e16ac33 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaTargetAttributes.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaTargetAttributes.java
@@ -20,7 +20,7 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsMode;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -82,8 +82,9 @@
 
     private final Set<Artifact> additionalOutputs = new LinkedHashSet<>();
 
-    private BuildConfiguration.StrictDepsMode strictJavaDeps =
-        BuildConfiguration.StrictDepsMode.OFF;
+    /** @see {@link #setStrictJavaDeps}. */
+    private StrictDepsMode strictJavaDeps = StrictDepsMode.ERROR;
+
     private final NestedSetBuilder<Artifact> directJars = NestedSetBuilder.naiveLinkOrder();
     private final NestedSetBuilder<Artifact> compileTimeDependencyArtifacts =
         NestedSetBuilder.stableOrder();
@@ -213,12 +214,14 @@
     }
 
     /**
-     * Controls how strict the javac compiler will be in checking correct use of
-     * direct dependencies.
+     * Controls how strict the javac compiler will be in checking correct use of direct
+     * dependencies.
+     *
+     * <p>Defaults to {@link StrictDepsMode#ERROR}.
      *
      * @param strictDeps one of WARN, ERROR or OFF
      */
-    public Builder setStrictJavaDeps(BuildConfiguration.StrictDepsMode strictDeps) {
+    public Builder setStrictJavaDeps(StrictDepsMode strictDeps) {
       Preconditions.checkArgument(!built);
       strictJavaDeps = strictDeps;
       return this;
@@ -422,7 +425,7 @@
   @Nullable private String injectingRuleKind;
 
   private final NestedSet<Artifact> excludedArtifacts;
-  private final BuildConfiguration.StrictDepsMode strictJavaDeps;
+  private final StrictDepsMode strictJavaDeps;
 
   /** Constructor of JavaTargetAttributes. */
   private JavaTargetAttributes(
@@ -444,7 +447,7 @@
       Label targetLabel,
       @Nullable String injectingRuleKind,
       NestedSetBuilder<Artifact> excludedArtifacts,
-      BuildConfiguration.StrictDepsMode strictJavaDeps) {
+      StrictDepsMode strictJavaDeps) {
     this.sourceFiles = ImmutableSet.copyOf(sourceFiles);
     this.runtimeClassPath = runtimeClassPath.build();
     this.directJars = directJars;
@@ -596,7 +599,7 @@
     return injectingRuleKind;
   }
 
-  public BuildConfiguration.StrictDepsMode getStrictJavaDeps() {
+  public StrictDepsMode getStrictJavaDeps() {
     return strictJavaDeps;
   }
 }