aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2017-01-12 09:24:35 +0000
committerGravatar Marcel Hlopko <hlopko@google.com>2017-01-12 14:08:14 +0000
commitbbd1c1e001c39dec7eeeab16f1a619d3540ba959 (patch)
tree41904ec80df84e7b197568f6c8dadb0366b7260b /src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java
parent31e29d15448dfde032c4e519bc8707165be48e34 (diff)
Add a java_{library,binary}.resource_jars attribute that allows one to specify jar files containing Java resources.
-- PiperOrigin-RevId: 144299119 MOS_MIGRATED_REVID=144299119
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java
index 87e3443163..efc8da71c8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java
@@ -139,6 +139,9 @@ public final class JackCompilationHelper {
/** Java resources for the rule's Jack library. */
private final ImmutableMap<PathFragment, Artifact> resources;
+ /** Jars that contain resources to be added to the Jack library. */
+ private final NestedSet<Artifact> resourceJars;
+
/** Jack libraries to be provided to depending rules on the classpath, from srcs and exports. */
private final NestedSet<Artifact> exportedJacks;
/**
@@ -187,6 +190,7 @@ public final class JackCompilationHelper {
ImmutableSet<Artifact> javaSources,
ImmutableSet<Artifact> sourceJars,
ImmutableMap<PathFragment, Artifact> resources,
+ NestedSet<Artifact> resourceJars,
NestedSet<Artifact> processorClasspathJars,
ImmutableSet<String> processorNames,
NestedSet<Artifact> exportedJacks,
@@ -206,6 +210,7 @@ public final class JackCompilationHelper {
this.javaSources = javaSources;
this.sourceJars = sourceJars;
this.resources = resources;
+ this.resourceJars = resourceJars;
this.processorClasspathJars = processorClasspathJars;
this.processorNames = processorNames;
this.exportedJacks = exportedJacks;
@@ -349,11 +354,12 @@ public final class JackCompilationHelper {
NestedSetBuilder<Artifact> dexContents = new NestedSetBuilder<>(Order.NAIVE_LINK_ORDER);
if (outputArtifact != null) {
- if (javaSources.isEmpty() && sourceJars.isEmpty() && resources.isEmpty()) {
+ if (javaSources.isEmpty() && sourceJars.isEmpty() && resources.isEmpty()
+ && resourceJars.isEmpty()) {
// We still have to create SOMETHING to fulfill the artifact, but man, screw it
buildEmptyJackAction();
} else {
- buildJackAction(javaSources, sourceJars, resources, classpath);
+ buildJackAction(javaSources, sourceJars, resources, resourceJars, classpath);
exports.add(outputArtifact);
dexContents.add(outputArtifact);
}
@@ -485,6 +491,7 @@ public final class JackCompilationHelper {
Iterable<Artifact> javaSources,
Iterable<Artifact> sourceJars,
Map<PathFragment, Artifact> resources,
+ NestedSet<Artifact> resourceJars,
NestedSet<Artifact> classpathJackLibraries) {
CustomCommandLine.Builder builder =
CustomCommandLine.builder()
@@ -517,6 +524,9 @@ public final class JackCompilationHelper {
builder.addPaths("%s:%s", rootPrefix, resourcePath);
}
}
+ if (!resourceJars.isEmpty()) {
+ builder.addJoinExecPaths(IMPORT_RESOURCE_ZIP, ":", resourceJars);
+ }
builder.addBeforeEachExecPath(IMPORT_SOURCE_ZIP, sourceJars).addExecPaths(javaSources);
ruleContext.registerAction(
new SpawnAction.Builder()
@@ -525,6 +535,7 @@ public final class JackCompilationHelper {
.addOutput(outputArtifact)
.addTransitiveInputs(processorClasspathJars)
.addInputs(resources.values())
+ .addTransitiveInputs(resourceJars)
.addInputs(sourceJars)
.addInputs(javaSources)
.setCommandLine(builder.build())
@@ -567,6 +578,9 @@ public final class JackCompilationHelper {
/** Map from paths within the Jack library to Java resources for the rule's Jack library. */
private final LinkedHashMap<PathFragment, Artifact> resources = new LinkedHashMap<>();
+ /** Set of resource jars that contain Java resources. */
+ private final NestedSetBuilder<Artifact> resourceJars = NestedSetBuilder.stableOrder();
+
/** Jack libraries to be provided to depending rules on the classpath, from srcs and exports. */
private final NestedSetBuilder<Artifact> exportedJackLibraries =
new NestedSetBuilder<>(Order.NAIVE_LINK_ORDER);
@@ -712,6 +726,11 @@ public final class JackCompilationHelper {
return this;
}
+ public JackCompilationHelper.Builder addResourceJars(NestedSet<Artifact> resourceJars) {
+ this.resourceJars.addTransitive(resourceJars);
+ return this;
+ }
+
/**
* Adds a set of class names which will be used as annotation processors.
*/
@@ -867,6 +886,7 @@ public final class JackCompilationHelper {
ImmutableSet.copyOf(javaSources),
ImmutableSet.copyOf(sourceJars),
ImmutableMap.copyOf(resources),
+ resourceJars.build(),
processorClasspathJars.build(),
ImmutableSet.copyOf(processorNames),
exportedJackLibraries.build(),