Skip to content
This repository was archived by the owner on Nov 5, 2019. It is now read-only.

Commit 00f4228

Browse files
committed
Ensure maven pom tempalte is built properly
1 parent d748d58 commit 00f4228

File tree

5 files changed

+26
-5
lines changed

5 files changed

+26
-5
lines changed

src/com/facebook/buck/jvm/java/JavaLibraryDescription.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,8 @@ public BuildRule createBuildRule(
217217
if (!flavors.contains(JavaLibrary.MAVEN_JAR)) {
218218
return defaultJavaLibrary;
219219
} else {
220-
graphBuilder.addToIndex(defaultJavaLibrary);
221220
return MavenUberJar.create(
221+
ruleFinder,
222222
defaultJavaLibrary,
223223
buildTargetWithMavenFlavor,
224224
projectFilesystem,

src/com/facebook/buck/jvm/java/MavenUberJar.java

+14-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.facebook.buck.core.model.BuildTarget;
2222
import com.facebook.buck.core.rules.BuildRule;
2323
import com.facebook.buck.core.rules.BuildRuleParams;
24+
import com.facebook.buck.core.rules.SourcePathRuleFinder;
2425
import com.facebook.buck.core.rules.impl.AbstractBuildRuleWithDeclaredAndExtraDeps;
2526
import com.facebook.buck.core.sourcepath.ExplicitBuildTargetSourcePath;
2627
import com.facebook.buck.core.sourcepath.SourcePath;
@@ -37,6 +38,7 @@
3738
import com.google.common.collect.ImmutableList;
3839
import com.google.common.collect.ImmutableSet;
3940
import com.google.common.collect.ImmutableSortedSet;
41+
import com.google.common.collect.ImmutableSortedSet.Builder;
4042
import com.google.common.collect.Ordering;
4143
import com.google.common.collect.Sets;
4244
import java.nio.file.Path;
@@ -70,10 +72,13 @@ private MavenUberJar(
7072
this.mavenPomTemplate = mavenPomTemplate;
7173
}
7274

73-
private static BuildRuleParams adjustParams(BuildRuleParams params, TraversedDeps traversedDeps) {
75+
private static BuildRuleParams adjustParams(
76+
BuildRuleParams params,
77+
TraversedDeps traversedDeps,
78+
ImmutableSortedSet<BuildRule> extras) {
7479
return params
7580
.withDeclaredDeps(ImmutableSortedSet.copyOf(Ordering.natural(), traversedDeps.packagedDeps))
76-
.withoutExtraDeps();
81+
.withExtraDeps(extras);
7782
}
7883

7984
/**
@@ -84,18 +89,23 @@ private static BuildRuleParams adjustParams(BuildRuleParams params, TraversedDep
8489
* published item.
8590
*/
8691
public static MavenUberJar create(
92+
SourcePathRuleFinder resolver,
8793
JavaLibrary rootRule,
8894
BuildTarget buildTarget,
8995
ProjectFilesystem projectFilesystem,
9096
BuildRuleParams params,
9197
Optional<String> mavenCoords,
9298
Optional<SourcePath> mavenPomTemplate) {
9399
TraversedDeps traversedDeps = TraversedDeps.traverse(ImmutableSet.of(rootRule));
100+
101+
Builder<BuildRule> templateRule = ImmutableSortedSet.naturalOrder();
102+
mavenPomTemplate.ifPresent(path -> resolver.getRule(path).ifPresent(templateRule::add));
103+
94104
return new MavenUberJar(
95105
traversedDeps,
96106
buildTarget,
97107
projectFilesystem,
98-
adjustParams(params, traversedDeps),
108+
adjustParams(params, traversedDeps, templateRule.build()),
99109
mavenCoords,
100110
mavenPomTemplate);
101111
}
@@ -195,6 +205,7 @@ private static TraversedDeps traverse(
195205

196206
Set<JavaLibrary> difference = Sets.difference(candidates.build(), removals.build());
197207
Set<? extends BuildRule> mandatoryRules = alwaysPackageRoots ? roots : Collections.emptySet();
208+
198209
return new TraversedDeps(
199210
/* mavenDeps */ depsCollector.build(),
200211
/* packagedDeps */ Sets.union(mandatoryRules, difference));

src/com/facebook/buck/jvm/kotlin/KotlinLibraryDescription.java

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.facebook.buck.core.rules.ActionGraphBuilder;
2525
import com.facebook.buck.core.rules.BuildRule;
2626
import com.facebook.buck.core.rules.BuildRuleParams;
27+
import com.facebook.buck.core.rules.SourcePathRuleFinder;
2728
import com.facebook.buck.core.toolchain.ToolchainProvider;
2829
import com.facebook.buck.core.util.immutables.BuckStyleImmutable;
2930
import com.facebook.buck.io.filesystem.ProjectFilesystem;
@@ -148,7 +149,9 @@ public BuildRule createBuildRule(
148149
return defaultKotlinLibrary;
149150
} else {
150151
graphBuilder.addToIndex(defaultKotlinLibrary);
152+
SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(graphBuilder);
151153
return MavenUberJar.create(
154+
ruleFinder,
152155
defaultKotlinLibrary,
153156
buildTargetWithMavenFlavor,
154157
projectFilesystem,

src/com/facebook/buck/jvm/scala/ScalaLibraryDescription.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
import com.facebook.buck.core.model.Flavored;
2424
import com.facebook.buck.core.model.targetgraph.BuildRuleCreationContextWithTargetGraph;
2525
import com.facebook.buck.core.model.targetgraph.DescriptionWithTargetGraph;
26+
import com.facebook.buck.core.rules.ActionGraphBuilder;
2627
import com.facebook.buck.core.rules.BuildRule;
2728
import com.facebook.buck.core.rules.BuildRuleParams;
29+
import com.facebook.buck.core.rules.SourcePathRuleFinder;
2830
import com.facebook.buck.core.toolchain.ToolchainProvider;
2931
import com.facebook.buck.core.util.immutables.BuckStyleImmutable;
3032
import com.facebook.buck.io.filesystem.ProjectFilesystem;
@@ -152,8 +154,11 @@ public BuildRule createBuildRule(
152154
if (!flavors.contains(JavaLibrary.MAVEN_JAR)) {
153155
return defaultScalaLibrary;
154156
} else {
155-
context.getActionGraphBuilder().addToIndex(defaultScalaLibrary);
157+
ActionGraphBuilder graphBuilder = context.getActionGraphBuilder();
158+
SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(graphBuilder);
159+
graphBuilder.addToIndex(defaultScalaLibrary);
156160
return MavenUberJar.create(
161+
ruleFinder,
157162
defaultScalaLibrary,
158163
buildTargetWithMavenFlavor,
159164
projectFilesystem,

test/com/facebook/buck/jvm/java/MavenUberJarTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.facebook.buck.core.model.targetgraph.TargetGraph;
2424
import com.facebook.buck.core.model.targetgraph.TargetGraphFactory;
2525
import com.facebook.buck.core.rules.ActionGraphBuilder;
26+
import com.facebook.buck.core.rules.SourcePathRuleFinder;
2627
import com.facebook.buck.core.rules.resolver.impl.TestActionGraphBuilder;
2728
import com.facebook.buck.features.python.PythonLibrary;
2829
import com.facebook.buck.features.python.PythonLibraryBuilder;
@@ -62,6 +63,7 @@ public void onlyJavaDepsIncluded() throws NoSuchBuildTargetException {
6263

6364
MavenUberJar buildRule =
6465
MavenUberJar.create(
66+
new SourcePathRuleFinder(graphBuilder),
6567
javaLibrary,
6668
javaTarget,
6769
new FakeProjectFilesystem(),

0 commit comments

Comments
 (0)