diff options
author | elenairina <elenairina@google.com> | 2017-05-12 09:34:25 -0400 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2017-05-12 11:14:11 -0400 |
commit | a3f2cf83a7683b80245d3004d4874c2516e907ce (patch) | |
tree | 79cf40d69602113fdfe7032e9b974cb7bec9d7b6 /src/main/java/com | |
parent | b006a63603df405808d6a05602786c0ab55a44f5 (diff) |
Add resources to java_common.compile.
Progress on the java sandwich #2614 in an effort to make the Java compilation exposed to Skylark as similar as possible to java_library's API.
PiperOrigin-RevId: 155861145
Diffstat (limited to 'src/main/java/com')
3 files changed, 23 insertions, 2 deletions
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 e14fc2c6fc..7a58f46c6e 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 @@ -44,6 +44,7 @@ public final class JavaLibraryHelper { private Artifact output; private final List<Artifact> sourceJars = new ArrayList<>(); private final List<Artifact> sourceFiles = new ArrayList<>(); + private final List<Artifact> resources = new ArrayList<>(); /** * Contains all the dependencies; these are treated as both compile-time and runtime dependencies. @@ -85,6 +86,11 @@ public final class JavaLibraryHelper { return this.addSourceJars(Arrays.asList(sourceJars)); } + public JavaLibraryHelper addResources(Iterable<Artifact> resources) { + Iterables.addAll(this.resources, resources); + return this; + } + public JavaLibraryHelper addDep(JavaCompilationArgsProvider provider) { checkNotNull(provider); this.deps.add(provider); @@ -152,6 +158,11 @@ public final class JavaLibraryHelper { attributes.setTargetLabel(ruleContext.getLabel()); attributes.setSourcePath(sourcePathEntries); + for (Artifact resource : resources) { + attributes.addResource( + JavaHelper.getJavaResourcePath(semantics, ruleContext, resource), resource); + } + if (isStrict() && classpathMode != JavaClasspathMode.OFF) { JavaCompilationHelper.addDependencyArtifactsToAttributes( attributes, deps); 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 86267d4e95..4f975a1c76 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 @@ -177,6 +177,14 @@ public class JavaSkylarkCommon { type = SkylarkList.class, generic1 = Artifact.class, defaultValue = "[]" + ), + @Param( + name = "resources", + positional = false, + named = true, + type = SkylarkList.class, + generic1 = Artifact.class, + defaultValue = "[]" ) } ) @@ -190,13 +198,15 @@ public class JavaSkylarkCommon { String strictDepsMode, ConfiguredTarget javaToolchain, ConfiguredTarget hostJavabase, - SkylarkList<Artifact> sourcepathEntries) throws EvalException { + SkylarkList<Artifact> sourcepathEntries, + SkylarkList<Artifact> resources) throws EvalException { JavaLibraryHelper helper = new JavaLibraryHelper(skylarkRuleContext.getRuleContext()) .setOutput(outputJar) .addSourceJars(sourceJars) .addSourceFiles(sourceFiles) + .addResources(resources) .setSourcePathEntries(sourcepathEntries) .setJavacOpts(javacOpts); diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/ResourceJarActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/ResourceJarActionBuilder.java index a549af3665..a4e707e067 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/ResourceJarActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/ResourceJarActionBuilder.java @@ -93,7 +93,7 @@ public class ResourceJarActionBuilder { .setJarExecutable( ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(), singleJar, - JavaToolchainProvider.fromRuleContext(ruleContext).getJvmOptions()) + javaToolchain.getJvmOptions()) .addTransitiveInputs(javabase); } else { builder.setExecutable(singleJar); |