Skip to content

Commit e8009df

Browse files
committed
Support excludeConfiguration with feature flag
1 parent 8a2127b commit e8009df

File tree

3 files changed

+24
-11
lines changed

3 files changed

+24
-11
lines changed

src/main/groovy/netflix/nebula/dependency/recommender/DependencyRecommendationsPlugin.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,16 @@ public void apply(final Project project) {
6767
}
6868

6969
private void applyRecommendationsDirectly(final Project project, final Configuration bomConfiguration) {
70-
final Set<String> excluded = recommendationProviderContainer.getExcludedConfigurations();
71-
project.getConfigurations().all(new ExtendRecommenderConfigurationAction(bomConfiguration, excluded, project));
72-
project.subprojects(new Action<Project>() {
70+
project.afterEvaluate(new Action<Project>() {
7371
@Override
74-
public void execute(Project sub) {
75-
sub.getConfigurations().all(new ExtendRecommenderConfigurationAction(bomConfiguration, excluded, sub));
72+
public void execute(Project p) {
73+
p.getConfigurations().all(new ExtendRecommenderConfigurationAction(bomConfiguration, p, recommendationProviderContainer));
74+
p.subprojects(new Action<Project>() {
75+
@Override
76+
public void execute(Project sub) {
77+
sub.getConfigurations().all(new ExtendRecommenderConfigurationAction(bomConfiguration, sub, recommendationProviderContainer));
78+
}
79+
});
7680
}
7781
});
7882
}

src/main/groovy/netflix/nebula/dependency/recommender/ExtendRecommenderConfigurationAction.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
11
package netflix.nebula.dependency.recommender;
22

3+
import netflix.nebula.dependency.recommender.provider.RecommendationProviderContainer;
34
import org.gradle.api.Action;
45
import org.gradle.api.Project;
56
import org.gradle.api.artifacts.Configuration;
67

7-
import java.util.Set;
8-
98
public class ExtendRecommenderConfigurationAction implements Action<Configuration> {
109
private final Configuration bom;
11-
private final Set<String> excludedConfigurationNames;
1210
private final Project project;
11+
private final RecommendationProviderContainer container;
1312

14-
public ExtendRecommenderConfigurationAction(Configuration bom, Set<String> excludedConfigurationNames, Project project) {
13+
public ExtendRecommenderConfigurationAction(Configuration bom, Project project, RecommendationProviderContainer container) {
1514
this.bom = bom;
16-
this.excludedConfigurationNames = excludedConfigurationNames;
1715
this.project = project;
16+
this.container = container;
1817
}
1918

2019
@Override
2120
public void execute(Configuration configuration) {
22-
if (excludedConfigurationNames.contains(configuration.getName())) {
21+
if (container.getExcludedConfigurations().contains(configuration.getName())) {
2322
return;
2423
}
2524
Configuration toExtend = bom;

src/test/groovy/netflix/nebula/dependency/recommender/DependencyRecommendationsPluginCoreBomSupportSpec.groovy

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,16 @@ class DependencyRecommendationsPluginCoreBomSupportSpec extends IntegrationSpec
4242
pom.addManagementDependency('test.nebula', 'bar', '2.0.0')
4343
pom.addManagementDependency('test.nebula', 'baz', '2.5.0')
4444
pom.addManagementDependency('test.nebula', 'lib', '3.9.9')
45+
pom.addManagementDependency('test.nebula', 'app', '8.0.0')
4546
repo.poms.add(pom)
4647
repo.generate()
4748
def graph = new DependencyGraphBuilder()
4849
.addModule('test.nebula:foo:1.0.0')
4950
.addModule('test.nebula:bar:2.0.0')
5051
.addModule('test.nebula:baz:2.5.0')
5152
.addModule('test.nebula:lib:3.9.9')
53+
.addModule('test.nebula:app:7.0.0')
54+
.addModule('test.nebula:app:8.0.0')
5255
.build()
5356
generator = new GradleDependencyGenerator(graph)
5457
generator.generateTestMavenRepo()
@@ -66,6 +69,7 @@ class DependencyRecommendationsPluginCoreBomSupportSpec extends IntegrationSpec
6669
}
6770
6871
dependencyRecommendations {
72+
excludeConfigurations('compileOnly')
6973
mavenBom module: 'test.nebula.bom:testbom:latest.release'
7074
}
7175
@@ -74,17 +78,23 @@ class DependencyRecommendationsPluginCoreBomSupportSpec extends IntegrationSpec
7478
compile 'test.nebula:foo'
7579
providedCompile 'test.nebula:lib'
7680
runtimeOnly 'test.nebula:baz'
81+
compileOnly 'test.nebula:app:7.0.0' // bom recommends 8, but config excluded
7782
}
7883
""".stripIndent()
7984

8085
when:
8186
def result = runTasksSuccessfully('dependencies')
87+
def compileOnlyResult = runTasksSuccessfully('dependencies', '--configuration', 'compileOnly')
8288

8389
then:
8490
result.standardOutput.contains("+--- test.nebula:foo -> 1.0.0")
8591
result.standardOutput.contains("+--- test.nebula:bar -> 2.0.0")
8692
result.standardOutput.contains("\\--- test.nebula:baz -> 2.5.0")
8793
result.standardOutput.contains("\\--- test.nebula:lib -> 3.9.9")
94+
95+
compileOnlyResult.standardOutput.contains("compileOnly - Compile only dependencies for source set 'main'.\n" +
96+
"\\--- test.nebula:app:7.0.0")
97+
!compileOnlyResult.standardOutput.contains('test.nebula.bom:testbom:latest.release')
8898
}
8999

90100
@Unroll

0 commit comments

Comments
 (0)