public interface HasRuntimeDeps extends BuildRule
Consider the case of a Java test. The JavaTest
rule itself
is just a DefaultJavaLibrary
and so only lists its immediate
compile time deps as its normal first-order dependencies. However, to actually run a Java test,
we need it's entire transitive dependency tree locally on disk. Since this is outside the
contract of normal build dependencies (e.g. a top-down build engine may decide not to pull a
dependency locally if the top-level target can be pulled from cache, and therefore won't need to
be built), we need some other way to convey to the build engine that a set of rules that need to
be on disk by the end of the build.
Enter this interface. While it serves an important purpose, its long-term semantics aren't entirely clear yet, so expect how we model this and how the build engine uses this to change in the future.
Modifier and Type | Method and Description |
---|---|
java.util.stream.Stream<BuildTarget> |
getRuntimeDeps(BuildRuleResolver buildRuleResolver) |
compareTo, getBuildDeps, getBuildSteps, getBuildTarget, getFullyQualifiedName, getProjectFilesystem, getSourcePathToOutput, hasBuildSteps, isCacheable, outputFileCanBeCopied, shouldRespectInputSizeLimitForRemoteExecution, toString, updateBuildRuleResolver
getDependencies, getSourcePathOutputs
getType
java.util.stream.Stream<BuildTarget> getRuntimeDeps(BuildRuleResolver buildRuleResolver)