diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
6 files changed, 42 insertions, 17 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java index cdcdc8081d..761da14936 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java @@ -259,6 +259,16 @@ public final class JavaInfo extends NativeInfo { providers.getProvider(JavaSourceJarsProvider.class).getSourceJars()); } + @SkylarkCallable( + name = "outputs", + doc = "Returns information about outputs of this Java target.", + structField = true, + allowReturnNones = true + ) + public JavaRuleOutputJarsProvider getOutputJars() { + return getProvider(JavaRuleOutputJarsProvider.class); + } + @Override public boolean equals(Object otherObject) { if (this == otherObject) { 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 8b43e9491c..99f00edfc3 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 @@ -27,6 +27,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaClasspathMode; +import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar; import com.google.devtools.build.lib.util.Preconditions; import java.util.ArrayList; import java.util.Arrays; @@ -154,12 +155,16 @@ public final class JavaLibraryHelper { return this; } - /** Creates the compile actions. */ + /** + * Creates the compile actions. Also fills in the {@link JavaRuleOutputJarsProvider.Builder} with + * the corresponding compilation outputs. + */ public JavaCompilationArtifacts build( JavaSemantics semantics, JavaToolchainProvider javaToolchainProvider, NestedSet<Artifact> hostJavabase, - Iterable<Artifact> jacocoInstrumental) { + Iterable<Artifact> jacocoInstrumental, + JavaRuleOutputJarsProvider.Builder outputJarsBuilder) { Preconditions.checkState(output != null, "must have an output file; use setOutput()"); JavaTargetAttributes.Builder attributes = new JavaTargetAttributes.Builder(semantics); attributes.addSourceJars(sourceJars); @@ -189,9 +194,14 @@ public final class JavaLibraryHelper { Artifact outputDepsProto = helper.createOutputDepsProtoArtifact(output, artifactsBuilder); helper.createCompileAction( output, null /* manifestProtoOutput */, null /* gensrcOutputJar */, outputDepsProto); - helper.createCompileTimeJarAction(output, artifactsBuilder); + Artifact iJar = helper.createCompileTimeJarAction(output, artifactsBuilder); + artifactsBuilder.addRuntimeJar(output); + outputJarsBuilder + .addOutputJar(new OutputJar(output, iJar, sourceJars)) + .setJdeps(outputDepsProto); + return artifactsBuilder.build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java index 5483d9ae6c..9d4c8ad915 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java @@ -173,6 +173,11 @@ public final class JavaRuleOutputJarsProvider implements TransitiveInfoProvider return this; } + public Builder addOutputJars(Iterable<OutputJar> outputJars) { + this.outputJars.addAll(outputJars); + return this; + } + public Builder addOutputJar(OutputJar outputJar) { outputJars.add(outputJar); return this; diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java index d520a6fdef..1c87c48911 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java @@ -428,19 +428,17 @@ public class JavaSkylarkCommon { NestedSet<Artifact> hostJavabaseArtifacts = hostJavabaseProvider == null - ? NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER) + ? NestedSetBuilder.emptySet(Order.STABLE_ORDER) : hostJavabaseProvider.getMiddlemanArtifact(); JavaToolchainProvider javaToolchainProvider = getJavaToolchainProvider(javaToolchain); + JavaRuleOutputJarsProvider.Builder outputJarsBuilder = JavaRuleOutputJarsProvider.builder(); JavaCompilationArtifacts artifacts = helper.build( javaSemantics, javaToolchainProvider, hostJavabaseArtifacts, - SkylarkList.createImmutable(ImmutableList.<Artifact>of())); - JavaRuleOutputJarsProvider javaRuleOutputJarsProvider = - JavaRuleOutputJarsProvider.builder().addOutputJar( - new JavaRuleOutputJarsProvider.OutputJar(outputJar, /* ijar */ null, sourceJars)) - .build(); + SkylarkList.createImmutable(ImmutableList.of()), + outputJarsBuilder); JavaCompilationArgsProvider javaCompilationArgsProvider = helper.buildCompilationArgsProvider(artifacts, true); Runfiles runfiles = @@ -458,12 +456,12 @@ public class JavaSkylarkCommon { )); return JavaInfo.Builder.create() - .addProvider(JavaCompilationArgsProvider.class, javaCompilationArgsProvider) - .addProvider(JavaSourceJarsProvider.class, createJavaSourceJarsProvider(sourceJars)) - .addProvider(JavaRuleOutputJarsProvider.class, javaRuleOutputJarsProvider) - .addProvider(JavaRunfilesProvider.class, new JavaRunfilesProvider(runfiles)) - .addProvider(JavaPluginInfoProvider.class, transitivePluginsProvider) - .build(); + .addProvider(JavaCompilationArgsProvider.class, javaCompilationArgsProvider) + .addProvider(JavaSourceJarsProvider.class, createJavaSourceJarsProvider(sourceJars)) + .addProvider(JavaRuleOutputJarsProvider.class, outputJarsBuilder.build()) + .addProvider(JavaRunfilesProvider.class, new JavaRunfilesProvider(runfiles)) + .addProvider(JavaPluginInfoProvider.class, transitivePluginsProvider) + .build(); } private static Artifact buildIjar( diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java index 9b09be1b1a..cc6cc166a3 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java @@ -267,7 +267,8 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured javaSemantics, JavaCompilationHelper.getJavaToolchainProvider(ruleContext), JavaHelper.getHostJavabaseInputs(ruleContext), - JavaCompilationHelper.getInstrumentationJars(ruleContext)); + JavaCompilationHelper.getInstrumentationJars(ruleContext), + JavaRuleOutputJarsProvider.builder()); return helper.buildCompilationArgsProvider(artifacts, true /* isReportedAsStrict */); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java index 91e4b3b734..90df082037 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java @@ -305,7 +305,8 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe javaSemantics, JavaCompilationHelper.getJavaToolchainProvider(ruleContext), JavaHelper.getHostJavabaseInputs(ruleContext), - JavaCompilationHelper.getInstrumentationJars(ruleContext)), + JavaCompilationHelper.getInstrumentationJars(ruleContext), + JavaRuleOutputJarsProvider.builder()), true /* isReportedAsStrict */); } |