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

Commit

Permalink
Ensure maven pom tempalte is built properly
Browse files Browse the repository at this point in the history
  • Loading branch information
shs96c committed Aug 25, 2018
1 parent d748d58 commit 00f4228
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/com/facebook/buck/jvm/java/JavaLibraryDescription.java
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,8 @@ public BuildRule createBuildRule(
if (!flavors.contains(JavaLibrary.MAVEN_JAR)) {
return defaultJavaLibrary;
} else {
graphBuilder.addToIndex(defaultJavaLibrary);
return MavenUberJar.create(
ruleFinder,
defaultJavaLibrary,
buildTargetWithMavenFlavor,
projectFilesystem,
Expand Down
17 changes: 14 additions & 3 deletions src/com/facebook/buck/jvm/java/MavenUberJar.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.facebook.buck.core.model.BuildTarget;
import com.facebook.buck.core.rules.BuildRule;
import com.facebook.buck.core.rules.BuildRuleParams;
import com.facebook.buck.core.rules.SourcePathRuleFinder;
import com.facebook.buck.core.rules.impl.AbstractBuildRuleWithDeclaredAndExtraDeps;
import com.facebook.buck.core.sourcepath.ExplicitBuildTargetSourcePath;
import com.facebook.buck.core.sourcepath.SourcePath;
Expand All @@ -37,6 +38,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.ImmutableSortedSet.Builder;
import com.google.common.collect.Ordering;
import com.google.common.collect.Sets;
import java.nio.file.Path;
Expand Down Expand Up @@ -70,10 +72,13 @@ private MavenUberJar(
this.mavenPomTemplate = mavenPomTemplate;
}

private static BuildRuleParams adjustParams(BuildRuleParams params, TraversedDeps traversedDeps) {
private static BuildRuleParams adjustParams(
BuildRuleParams params,
TraversedDeps traversedDeps,
ImmutableSortedSet<BuildRule> extras) {
return params
.withDeclaredDeps(ImmutableSortedSet.copyOf(Ordering.natural(), traversedDeps.packagedDeps))
.withoutExtraDeps();
.withExtraDeps(extras);
}

/**
Expand All @@ -84,18 +89,23 @@ private static BuildRuleParams adjustParams(BuildRuleParams params, TraversedDep
* published item.
*/
public static MavenUberJar create(
SourcePathRuleFinder resolver,
JavaLibrary rootRule,
BuildTarget buildTarget,
ProjectFilesystem projectFilesystem,
BuildRuleParams params,
Optional<String> mavenCoords,
Optional<SourcePath> mavenPomTemplate) {
TraversedDeps traversedDeps = TraversedDeps.traverse(ImmutableSet.of(rootRule));

Builder<BuildRule> templateRule = ImmutableSortedSet.naturalOrder();
mavenPomTemplate.ifPresent(path -> resolver.getRule(path).ifPresent(templateRule::add));

return new MavenUberJar(
traversedDeps,
buildTarget,
projectFilesystem,
adjustParams(params, traversedDeps),
adjustParams(params, traversedDeps, templateRule.build()),
mavenCoords,
mavenPomTemplate);
}
Expand Down Expand Up @@ -195,6 +205,7 @@ private static TraversedDeps traverse(

Set<JavaLibrary> difference = Sets.difference(candidates.build(), removals.build());
Set<? extends BuildRule> mandatoryRules = alwaysPackageRoots ? roots : Collections.emptySet();

return new TraversedDeps(
/* mavenDeps */ depsCollector.build(),
/* packagedDeps */ Sets.union(mandatoryRules, difference));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.facebook.buck.core.rules.ActionGraphBuilder;
import com.facebook.buck.core.rules.BuildRule;
import com.facebook.buck.core.rules.BuildRuleParams;
import com.facebook.buck.core.rules.SourcePathRuleFinder;
import com.facebook.buck.core.toolchain.ToolchainProvider;
import com.facebook.buck.core.util.immutables.BuckStyleImmutable;
import com.facebook.buck.io.filesystem.ProjectFilesystem;
Expand Down Expand Up @@ -148,7 +149,9 @@ public BuildRule createBuildRule(
return defaultKotlinLibrary;
} else {
graphBuilder.addToIndex(defaultKotlinLibrary);
SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(graphBuilder);
return MavenUberJar.create(
ruleFinder,
defaultKotlinLibrary,
buildTargetWithMavenFlavor,
projectFilesystem,
Expand Down
7 changes: 6 additions & 1 deletion src/com/facebook/buck/jvm/scala/ScalaLibraryDescription.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@
import com.facebook.buck.core.model.Flavored;
import com.facebook.buck.core.model.targetgraph.BuildRuleCreationContextWithTargetGraph;
import com.facebook.buck.core.model.targetgraph.DescriptionWithTargetGraph;
import com.facebook.buck.core.rules.ActionGraphBuilder;
import com.facebook.buck.core.rules.BuildRule;
import com.facebook.buck.core.rules.BuildRuleParams;
import com.facebook.buck.core.rules.SourcePathRuleFinder;
import com.facebook.buck.core.toolchain.ToolchainProvider;
import com.facebook.buck.core.util.immutables.BuckStyleImmutable;
import com.facebook.buck.io.filesystem.ProjectFilesystem;
Expand Down Expand Up @@ -152,8 +154,11 @@ public BuildRule createBuildRule(
if (!flavors.contains(JavaLibrary.MAVEN_JAR)) {
return defaultScalaLibrary;
} else {
context.getActionGraphBuilder().addToIndex(defaultScalaLibrary);
ActionGraphBuilder graphBuilder = context.getActionGraphBuilder();
SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(graphBuilder);
graphBuilder.addToIndex(defaultScalaLibrary);
return MavenUberJar.create(
ruleFinder,
defaultScalaLibrary,
buildTargetWithMavenFlavor,
projectFilesystem,
Expand Down
2 changes: 2 additions & 0 deletions test/com/facebook/buck/jvm/java/MavenUberJarTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.facebook.buck.core.model.targetgraph.TargetGraph;
import com.facebook.buck.core.model.targetgraph.TargetGraphFactory;
import com.facebook.buck.core.rules.ActionGraphBuilder;
import com.facebook.buck.core.rules.SourcePathRuleFinder;
import com.facebook.buck.core.rules.resolver.impl.TestActionGraphBuilder;
import com.facebook.buck.features.python.PythonLibrary;
import com.facebook.buck.features.python.PythonLibraryBuilder;
Expand Down Expand Up @@ -62,6 +63,7 @@ public void onlyJavaDepsIncluded() throws NoSuchBuildTargetException {

MavenUberJar buildRule =
MavenUberJar.create(
new SourcePathRuleFinder(graphBuilder),
javaLibrary,
javaTarget,
new FakeProjectFilesystem(),
Expand Down

0 comments on commit 00f4228

Please sign in to comment.