Skip to content

Commit cec9e60

Browse files
authored
Chore: Configure LZ4 capability conflict resolution (#7)
1 parent 069e9b9 commit cec9e60

File tree

1 file changed

+40
-16
lines changed

1 file changed

+40
-16
lines changed

src/main/java/org/hypertrace/gradle/dependency/HypertraceDependencySettingsPlugin.java

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,22 +46,24 @@ public void apply(@NotNull Settings settings) {
4646
settings
4747
.getGradle()
4848
.allprojects(
49-
project ->
50-
project
51-
.getPluginManager()
52-
.withPlugin(
53-
"java",
54-
unused -> {
55-
DependencyPluginProjectExtension projectExtension =
56-
this.addProjectExtension(project);
57-
this.assignDefaultConfigurationsToLock(project, projectExtension);
58-
this.addBomDependencyIfRequested(
59-
project, settingExtension, projectExtension);
60-
if (settingExtension.useDependencyLocking.get()) {
61-
this.addDependencyLocking(project, projectExtension);
62-
this.addLockTask(project, projectExtension);
63-
}
64-
}));
49+
project -> {
50+
this.configureLz4JavaCapabilityResolution(project);
51+
project
52+
.getPluginManager()
53+
.withPlugin(
54+
"java",
55+
unused -> {
56+
DependencyPluginProjectExtension projectExtension =
57+
this.addProjectExtension(project);
58+
this.assignDefaultConfigurationsToLock(project, projectExtension);
59+
this.addBomDependencyIfRequested(
60+
project, settingExtension, projectExtension);
61+
if (settingExtension.useDependencyLocking.get()) {
62+
this.addDependencyLocking(project, projectExtension);
63+
this.addLockTask(project, projectExtension);
64+
}
65+
});
66+
});
6567
}
6668

6769
private DependencyPluginSettingExtension createSettingsExtension(Settings target) {
@@ -311,4 +313,26 @@ private void configureHypertrace(MavenArtifactRepository artifactRepository) {
311313
artifactRepository.setName("hypertrace-maven");
312314
artifactRepository.setUrl(HYPERTRACE_REPOSITORY_URL);
313315
}
316+
317+
/**
318+
* Resolves the capability conflict between org.lz4:lz4-java and at.yawk.lz4:lz4-java caused by
319+
* Sonatype's redirect for CVE-2025-12183. When both artifacts appear in the dependency graph,
320+
* Gradle fails due to capability conflict. This resolution selects the relocated artifact.
321+
*/
322+
private void configureLz4JavaCapabilityResolution(Project project) {
323+
project
324+
.getConfigurations()
325+
.all(
326+
configuration ->
327+
configuration
328+
.getResolutionStrategy()
329+
.getCapabilitiesResolution()
330+
.withCapability(
331+
"org.lz4:lz4-java",
332+
details -> {
333+
details.select("at.yawk.lz4:lz4-java");
334+
details.because(
335+
"Both org.lz4 and at.yawk.lz4 provide lz4-java due to Sonatype redirect for CVE-2025-12183");
336+
}));
337+
}
314338
}

0 commit comments

Comments
 (0)