diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build')
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); |