diff options
author | 2016-01-21 00:45:32 +0000 | |
---|---|---|
committer | 2016-01-21 10:35:28 +0000 | |
commit | 0acd006477cf4c741fbea5384bcc30dda99ba210 (patch) | |
tree | 21e055cedca5490ea934b4514feffbae92725160 /src/java_tools/buildjar/java | |
parent | 0c4bbd892b521f8723ee6a8e0ba9dedbc5cc12e2 (diff) |
Refactor DependencyModule#computeStrictClasspath
so it can operate on lists of classpath entries, instead of pre-joined
classpath strings.
Also improve error for missing .jdeps inputs.
--
MOS_MIGRATED_REVID=112634009
Diffstat (limited to 'src/java_tools/buildjar/java')
-rw-r--r-- | src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java index b5a409f638..f3e4ab4809 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java @@ -17,6 +17,7 @@ package com.google.devtools.build.buildjar.javac.plugins.dependency; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Joiner; import com.google.common.base.Splitter; +import com.google.common.base.Verify; import com.google.devtools.build.buildjar.javac.plugins.BlazeJavaCompilerPlugin; import com.google.devtools.build.lib.view.proto.Deps; import com.google.devtools.build.lib.view.proto.Deps.Dependency.Kind; @@ -267,6 +268,18 @@ public final class DependencyModule { return originalClasspath; } + return CLASSPATH_JOINER.join( + computeStrictClasspath(CLASSPATH_SPLITTER.split(originalClasspath))); + } + + /** + * Computes a reduced compile-time classpath from the union of direct dependencies and their + * dependencies, as listed in the associated .deps artifacts. + */ + public List<String> computeStrictClasspath(Iterable<String> originalClasspath) + throws IOException { + Verify.verify(strictClasspathMode); + // Classpath = direct deps + runtime direct deps + their .deps requiredClasspath = new HashSet<>(directJarsToTargets.keySet()); @@ -276,12 +289,12 @@ public final class DependencyModule { // Filter the initial classpath and keep the original order List<String> filteredClasspath = new ArrayList<>(); - for (String entry : CLASSPATH_SPLITTER.split(originalClasspath)) { + for (String entry : originalClasspath) { if (requiredClasspath.contains(entry)) { filteredClasspath.add(entry); } } - return CLASSPATH_JOINER.join(filteredClasspath); + return filteredClasspath; } @VisibleForTesting @@ -304,6 +317,8 @@ public final class DependencyModule { requiredClasspath.add(dep.getPath()); } } + } catch (IOException e) { + throw new IOException(String.format("error reading deps artifact: %s", path), e); } } @@ -464,7 +479,7 @@ public final class DependencyModule { /** * Set the message to display when a missing indirect dependency is found. - * + * * @param fixMessage the fix message * @return this Builder instance */ |