aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/ResourceJarActionBuilder.java2
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);