Skip to content

Commit ab10c3f

Browse files
committed
Set more attributes on 'mainRuntimeClasspath' for consistent resolution
...to make it more similar to the default setup of runtime classpath configurations. This will increases the chance for successful variant conflict resolution.
1 parent 853ac08 commit ab10c3f

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/main/java/org/gradlex/javamodule/dependencies/JavaModuleDependenciesExtension.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@
2626
import org.gradle.api.artifacts.VersionCatalogsExtension;
2727
import org.gradle.api.artifacts.VersionConstraint;
2828
import org.gradle.api.artifacts.dsl.DependencyHandler;
29+
import org.gradle.api.attributes.Bundling;
30+
import org.gradle.api.attributes.Category;
31+
import org.gradle.api.attributes.LibraryElements;
2932
import org.gradle.api.attributes.Usage;
33+
import org.gradle.api.attributes.java.TargetJvmEnvironment;
3034
import org.gradle.api.file.ConfigurableFileCollection;
3135
import org.gradle.api.file.Directory;
3236
import org.gradle.api.file.ProjectLayout;
@@ -365,10 +369,15 @@ public Provider<String> moduleName(Provider<String> ga) {
365369
*
366370
* @param versionsProvidingProjects projects which runtime classpaths are the runtime classpaths of the applications/services being built.
367371
*/
368-
public void versionsFromConsistentResolution(String... versionsProvidingProjects) {
372+
public Configuration versionsFromConsistentResolution(String... versionsProvidingProjects) {
373+
ObjectFactory objects = getObjects();
369374
Configuration mainRuntimeClasspath = getConfigurations().create("mainRuntimeClasspath", c -> {
370375
c.setCanBeConsumed(false);
371-
c.getAttributes().attribute(Usage.USAGE_ATTRIBUTE, getObjects().named(Usage.class, Usage.JAVA_RUNTIME));
376+
c.getAttributes().attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.class, Usage.JAVA_RUNTIME));
377+
c.getAttributes().attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.class, Category.LIBRARY));
378+
c.getAttributes().attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.class, LibraryElements.JAR));
379+
c.getAttributes().attribute(TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE, objects.named(TargetJvmEnvironment.class, TargetJvmEnvironment.STANDARD_JVM));
380+
c.getAttributes().attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.class, Bundling.EXTERNAL));
372381
});
373382
getConfigurations().configureEach(c -> {
374383
if (c.isCanBeResolved() && !c.isCanBeConsumed() && c != mainRuntimeClasspath) {
@@ -379,9 +388,10 @@ public void versionsFromConsistentResolution(String... versionsProvidingProjects
379388
for (String versionsProvidingProject : versionsProvidingProjects) {
380389
getDependencies().add(mainRuntimeClasspath.getName(), createDependency(versionsProvidingProject));
381390
}
391+
return mainRuntimeClasspath;
382392
}
383393

384-
public void versionsFromPlatformAndConsistentResolution(String platformProject, String... versionsProvidingProjects) {
394+
public Configuration versionsFromPlatformAndConsistentResolution(String platformProject, String... versionsProvidingProjects) {
385395
boolean platformInJavaProject = Arrays.asList(versionsProvidingProjects).contains(platformProject);
386396
getSourceSets().configureEach(sourceSet -> getConfigurations().getByName(sourceSet.getImplementationConfigurationName()).withDependencies(d -> {
387397
Dependency platformDependency = getDependencies().platform(createDependency(platformProject));
@@ -397,7 +407,7 @@ public void versionsFromPlatformAndConsistentResolution(String platformProject,
397407
d.add(platformDependency);
398408
}));
399409

400-
versionsFromConsistentResolution(versionsProvidingProjects);
410+
return versionsFromConsistentResolution(versionsProvidingProjects);
401411
}
402412

403413
private Dependency createDependency(String project) {

0 commit comments

Comments
 (0)