Skip to content

Commit e0acc4d

Browse files
committed
WIP - Port each dependency to specific exclude transitive cmr
1 parent d57adbd commit e0acc4d

File tree

9 files changed

+156
-95
lines changed

9 files changed

+156
-95
lines changed

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaBasePlugin.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import org.elasticsearch.gradle.internal.test.MutedTestPlugin;
1717
import org.elasticsearch.gradle.internal.test.TestUtil;
1818
import org.elasticsearch.gradle.test.SystemPropertyCommandLineArgumentProvider;
19-
import org.elasticsearch.gradle.util.GradleUtils;
2019
import org.gradle.api.JavaVersion;
2120
import org.gradle.api.Plugin;
2221
import org.gradle.api.Project;
@@ -26,8 +25,6 @@
2625
import org.gradle.api.plugins.JavaBasePlugin;
2726
import org.gradle.api.plugins.JavaPluginExtension;
2827
import org.gradle.api.provider.Provider;
29-
import org.gradle.api.tasks.SourceSet;
30-
import org.gradle.api.tasks.SourceSetContainer;
3128
import org.gradle.api.tasks.compile.AbstractCompile;
3229
import org.gradle.api.tasks.compile.CompileOptions;
3330
import org.gradle.api.tasks.compile.GroovyCompile;
@@ -67,7 +64,6 @@ public void apply(Project project) {
6764
project.getPluginManager().apply(ElasticsearchTestBasePlugin.class);
6865
project.getPluginManager().apply(PrecommitTaskPlugin.class);
6966
project.getPluginManager().apply(MutedTestPlugin.class);
70-
7167
configureConfigurations(project);
7268
configureCompile(project);
7369
configureInputNormalization(project);

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaModulePathPlugin.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,13 @@ void configureCompileModulePath(Project project) {
7676
it.extendsFrom(compileClasspath);
7777
it.setCanBeResolved(true);
7878
it.setCanBeConsumed(false); // we don't want this configuration used by dependent projects
79-
it.attributes(
80-
attrs -> {
81-
attrs.attribute(
82-
LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE,
83-
project.getObjects().named(LibraryElements.class, LibraryElements.CLASSES)
84-
);
85-
attrs.attribute(
86-
Usage.USAGE_ATTRIBUTE,
87-
project.getObjects().named(Usage.class, Usage.JAVA_API)
88-
);
89-
}
90-
);
79+
it.attributes(attrs -> {
80+
attrs.attribute(
81+
LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE,
82+
project.getObjects().named(LibraryElements.class, LibraryElements.CLASSES)
83+
);
84+
attrs.attribute(Usage.USAGE_ATTRIBUTE, project.getObjects().named(Usage.class, Usage.JAVA_API));
85+
});
9186
}).getIncoming().artifactView(it -> {
9287
it.componentFilter(cf -> {
9388
var visited = new HashSet<ComponentIdentifier>();

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/dependencies/rules/DependencyRemovalByNameRule.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ public DependencyRemovalByNameRule(String... modulesToRemove) {
2525
@Override
2626
public void execute(ComponentMetadataContext context) {
2727
context.getDetails().allVariants(variants -> {
28-
variants.withDependencies(dependencies -> {
29-
dependencies.removeIf(metadata -> modulesToRemove.contains(metadata.getName()));
30-
});
28+
variants.withDependencies(dependencies -> { dependencies.removeIf(metadata -> modulesToRemove.contains(metadata.getName())); });
3129
});
3230
}
3331
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/dependencies/rules/ExcludeTransitivesRule.java

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,47 +9,42 @@
99

1010
package org.elasticsearch.gradle.internal.dependencies.rules;
1111

12-
import org.elasticsearch.gradle.internal.DependencyContext;
1312
import org.gradle.api.artifacts.ComponentMetadataContext;
1413
import org.gradle.api.artifacts.ComponentMetadataRule;
15-
import org.gradle.api.artifacts.VariantMetadata;
16-
import org.gradle.api.attributes.Attribute;
17-
import org.gradle.api.internal.artifacts.repositories.resolver.VariantMetadataAdapter;
1814

1915
//@CacheableRule
2016
public abstract class ExcludeTransitivesRule implements ComponentMetadataRule {
2117

22-
2318
@Override
2419
public void execute(ComponentMetadataContext context) {
2520
context.getDetails().allVariants(variant -> {
2621
variant.withDependencies(dependencies -> {
2722
// Exclude all transitive dependencies
28-
if(dependencies.isEmpty()) {
23+
if (dependencies.isEmpty()) {
2924
System.out.println(context.getDetails().getId().getGroup() + ":" + context.getDetails().getId().getName());
3025
}
3126
dependencies.clear();
32-
// dependencies.removeIf(p -> {
33-
// System.out.println("p.getName() = " + p.getName());
34-
// return true;
35-
// });
27+
// dependencies.removeIf(p -> {
28+
// System.out.println("p.getName() = " + p.getName());
29+
// return true;
30+
// });
3631
});
3732
});
3833
}
39-
//
40-
// private boolean isCodeQuality(VariantMetadata variant) {
41-
// // System.out.println("CodeQualityRule#context#variantName = " + ((VariantMetadataAdapter)variant).variantName);
42-
// System.out.println("ExcludeTransitivesRule#context#isCodeQuality = " + ((VariantMetadataAdapter) variant).toString());
43-
// try {
44-
// java.lang.reflect.Field field = VariantMetadataAdapter.class.getDeclaredField("variantName");
45-
// field.setAccessible(true);
46-
// Object variantName = field.get(variant);
47-
// System.out.println("ExcludeTransitivesRule#context#variantName = " + variantName);
48-
// } catch (Exception e) {
49-
// System.out.println("Failed to access variantName: " + e.getMessage());
50-
// }
51-
// DependencyContext attribute = variant.getAttributes().getAttribute(DependencyContext.CONTEXT_ATTRIBUTE);
52-
// return attribute != null && DependencyContext.CODE_QUALITY.equals(attribute.getName());
53-
// }
34+
//
35+
// private boolean isCodeQuality(VariantMetadata variant) {
36+
// // System.out.println("CodeQualityRule#context#variantName = " + ((VariantMetadataAdapter)variant).variantName);
37+
// System.out.println("ExcludeTransitivesRule#context#isCodeQuality = " + ((VariantMetadataAdapter) variant).toString());
38+
// try {
39+
// java.lang.reflect.Field field = VariantMetadataAdapter.class.getDeclaredField("variantName");
40+
// field.setAccessible(true);
41+
// Object variantName = field.get(variant);
42+
// System.out.println("ExcludeTransitivesRule#context#variantName = " + variantName);
43+
// } catch (Exception e) {
44+
// System.out.println("Failed to access variantName: " + e.getMessage());
45+
// }
46+
// DependencyContext attribute = variant.getAttributes().getAttribute(DependencyContext.CONTEXT_ATTRIBUTE);
47+
// return attribute != null && DependencyContext.CODE_QUALITY.equals(attribute.getName());
48+
// }
5449

5550
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/dependencies/rules/Log4jRule.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,11 @@ public abstract class Log4jRule implements ComponentMetadataRule {
1818
@Override
1919
public void execute(ComponentMetadataContext context) {
2020
context.getDetails().withVariant("apiElements", variantMetadata -> {
21-
variantMetadata.withDependencies(
22-
deps -> {
23-
deps.add("org.jspecify:jspecify:1.0.0");
24-
deps.add("com.github.spotbugs:spotbugs-annotations:4.9.3");
25-
deps.add("com.google.errorprone:error_prone_annotations:2.38.0");
26-
}
27-
);
21+
variantMetadata.withDependencies(deps -> {
22+
deps.add("org.jspecify:jspecify:1.0.0");
23+
deps.add("com.github.spotbugs:spotbugs-annotations:4.9.3");
24+
deps.add("com.google.errorprone:error_prone_annotations:2.38.0");
25+
});
2826
});
2927
}
3028
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/dependencies/rules/SpotlessRule2.java

Lines changed: 33 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@
99

1010
package org.elasticsearch.gradle.internal.dependencies.rules;
1111

12-
import org.elasticsearch.gradle.internal.DependencyContext;
1312
import org.gradle.api.artifacts.ComponentMetadataContext;
1413
import org.gradle.api.artifacts.ComponentMetadataRule;
1514
import org.gradle.api.attributes.Attribute;
16-
import org.gradle.api.internal.artifacts.repositories.resolver.VariantMetadataAdapter;
1715
import org.gradle.api.model.ObjectFactory;
1816

1917
import javax.inject.Inject;
@@ -29,43 +27,40 @@ public ObjectFactory getObjects() {
2927
public void execute(ComponentMetadataContext context) {
3028
System.out.println("SpotlessRule2#context = " + context.getDetails().getId());
3129
context.getDetails().allVariants(variant -> {
32-
variant.getAttributes().attribute(
33-
Attribute.of("custom.attribute", String.class),
34-
"some-value"
35-
);
30+
variant.getAttributes().attribute(Attribute.of("custom.attribute", String.class), "some-value");
3631
});
3732
}
3833

39-
// context.getDetails().allVariants(variantDetails -> {
40-
// variantDetails.withDependencies(dependencies -> {
41-
// dependencies.add("com.google.guava:guava:32.1.3-jre");
42-
// });
43-
// });
44-
// context.getDetails().attributes(new Action<AttributeContainer>() {
45-
// @Override
46-
// public void execute(AttributeContainer attributeContainer) {
47-
// attributeContainer.attribute(
48-
// DependencyContext.CONTEXT_ATTRIBUTE,
49-
// getObjects().named(DependencyContext.class, DependencyContext.CODE_QUALITY)
50-
// );
51-
// }
52-
// });
53-
// context.getDetails().addVariant("codeQuality", "runtime", variant -> {
54-
// System.out.println("SpotlessRul2e#context#variant = " + ((VariantMetadataAdapter) variant).toString());
55-
// // variant.attributes(attrs -> {
56-
// // ystem.out.println("Adding codeQuality variant to " + context.getDetails().getId());
57-
// variant.getAttributes()
58-
// .attribute(
59-
// DependencyContext.CONTEXT_ATTRIBUTE,
60-
// getObjects().named(DependencyContext.class, DependencyContext.CODE_QUALITY)
61-
// );
62-
// });
63-
// System.out.println("SpotlessRule#context#runtimeVariant = " + ((VariantMetadataAdapter)variant).toString());
64-
// // variant.attributes(attrs -> {
65-
// // ystem.out.println("Adding codeQuality variant to " + context.getDetails().getId());
66-
// variant.getAttributes()
67-
// .attribute(
68-
// DependencyContext.CONTEXT_ATTRIBUTE,
69-
// getObjects().named(DependencyContext.class, DependencyContext.CODE_QUALITY)
70-
// );
34+
// context.getDetails().allVariants(variantDetails -> {
35+
// variantDetails.withDependencies(dependencies -> {
36+
// dependencies.add("com.google.guava:guava:32.1.3-jre");
37+
// });
38+
// });
39+
// context.getDetails().attributes(new Action<AttributeContainer>() {
40+
// @Override
41+
// public void execute(AttributeContainer attributeContainer) {
42+
// attributeContainer.attribute(
43+
// DependencyContext.CONTEXT_ATTRIBUTE,
44+
// getObjects().named(DependencyContext.class, DependencyContext.CODE_QUALITY)
45+
// );
46+
// }
47+
// });
48+
// context.getDetails().addVariant("codeQuality", "runtime", variant -> {
49+
// System.out.println("SpotlessRul2e#context#variant = " + ((VariantMetadataAdapter) variant).toString());
50+
// // variant.attributes(attrs -> {
51+
// // ystem.out.println("Adding codeQuality variant to " + context.getDetails().getId());
52+
// variant.getAttributes()
53+
// .attribute(
54+
// DependencyContext.CONTEXT_ATTRIBUTE,
55+
// getObjects().named(DependencyContext.class, DependencyContext.CODE_QUALITY)
56+
// );
57+
// });
58+
// System.out.println("SpotlessRule#context#runtimeVariant = " + ((VariantMetadataAdapter)variant).toString());
59+
// // variant.attributes(attrs -> {
60+
// // ystem.out.println("Adding codeQuality variant to " + context.getDetails().getId());
61+
// variant.getAttributes()
62+
// .attribute(
63+
// DependencyContext.CONTEXT_ATTRIBUTE,
64+
// getObjects().named(DependencyContext.class, DependencyContext.CODE_QUALITY)
65+
// );
7166
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,11 @@ public void execute(Task task) {
9494
CheckstyleExtension checkstyle = project.getExtensions().getByType(CheckstyleExtension.class);
9595
checkstyle.getConfigDirectory().set(checkstyleDir);
9696
Configuration configuration = project.getConfigurations().getByName("checkstyle");
97-
configuration.getAttributes().attribute(
98-
DependencyContext.CONTEXT_ATTRIBUTE,
99-
project.getObjects().named(DependencyContext.class, DependencyContext.CODE_QUALITY)
100-
);
97+
configuration.getAttributes()
98+
.attribute(
99+
DependencyContext.CONTEXT_ATTRIBUTE,
100+
project.getObjects().named(DependencyContext.class, DependencyContext.CODE_QUALITY)
101+
);
101102
DependencyHandler dependencies = project.getDependencies();
102103
Provider<String> conventionsDependencyProvider = project.provider(
103104
() -> "org.elasticsearch:build-conventions:" + project.getVersion()

build-tools/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
import org.gradle.api.Task;
1515
import org.gradle.api.UnknownTaskException;
1616
import org.gradle.api.artifacts.Configuration;
17-
import org.gradle.api.artifacts.ModuleDependency;
18-
import org.gradle.api.artifacts.ProjectDependency;
1917
import org.gradle.api.plugins.JavaBasePlugin;
2018
import org.gradle.api.plugins.JavaPlugin;
2119
import org.gradle.api.plugins.JavaPluginExtension;

0 commit comments

Comments
 (0)