mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[gradle] deduplicate project dependencies using configuration names, not only files. IDEA-221699
GitOrigin-RevId: 21f9a0d622aeac6505ec070e09c5769c01924756
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c4d4a3f899
commit
fa7df15fc1
+49
@@ -549,4 +549,53 @@ public class GradleCompositeImportingTest extends GradleImportingTestCase {
|
||||
|
||||
assertModuleModuleDeps("root-project.sub-project.main", "myId.main");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TargetVersions("3.1+")
|
||||
public void testScopeUpdateForSubstituteDependency() throws Exception {
|
||||
createSettingsFile("rootProject.name = 'pA'\n" +
|
||||
"include 'pA-1', 'pA-2'\n" +
|
||||
"includeBuild('pB')\n" +
|
||||
"includeBuild('pC')");
|
||||
|
||||
createProjectSubFile("pB/settings.gradle");
|
||||
createProjectSubFile("pC/settings.gradle");
|
||||
|
||||
createProjectSubFile("pA-1/build.gradle",
|
||||
new GradleBuildScriptBuilderEx()
|
||||
.applyPlugin("'java-library'")
|
||||
.addDependency("implementation 'group:pC'")
|
||||
.generate());
|
||||
|
||||
createProjectSubFile("pA-2/build.gradle",
|
||||
new GradleBuildScriptBuilderEx()
|
||||
.applyPlugin("'java-library'")
|
||||
.addDependency("implementation project(':pA-1')")
|
||||
.addDependency("implementation 'group:pB'")
|
||||
.generate());
|
||||
|
||||
createProjectSubFile("pB/build.gradle",
|
||||
new GradleBuildScriptBuilderEx()
|
||||
.addPostfix("group = 'group'")
|
||||
.applyPlugin("'java-library'")
|
||||
.addDependency("api 'group:pC'")
|
||||
.generate());
|
||||
|
||||
createProjectSubFile("pC/build.gradle",
|
||||
new GradleBuildScriptBuilderEx()
|
||||
.addPostfix("group = 'group'")
|
||||
.applyPlugin("'java-library'")
|
||||
.generate());
|
||||
|
||||
//enableGradleDebugWithSuspend();
|
||||
importProject("");
|
||||
|
||||
assertModules("pA",
|
||||
"pA.pA-1", "pA.pA-1.main", "pA.pA-1.test",
|
||||
"pA.pA-2", "pA.pA-2.main", "pA.pA-2.test",
|
||||
"pB", "pB.main", "pB.test",
|
||||
"pC", "pC.main", "pC.test");
|
||||
|
||||
assertModuleModuleDepScope("pA.pA-2.main", "pC.main", COMPILE);
|
||||
}
|
||||
}
|
||||
|
||||
+16
-1
@@ -527,9 +527,24 @@ public class DependencyResolverImpl implements DependencyResolver {
|
||||
@NotNull ExternalDependency nextDependency) {
|
||||
Collection<File> seenFiles = getFiles(seenDependency);
|
||||
Collection<File> nextFiles = getFiles(nextDependency);
|
||||
return seenFiles.containsAll(nextFiles);
|
||||
boolean filesSeen = seenFiles.containsAll(nextFiles);
|
||||
boolean projectDependencySeen = compareAsProjectDependencies(seenDependency, nextDependency);
|
||||
|
||||
return filesSeen || projectDependencySeen;
|
||||
}
|
||||
|
||||
private static boolean compareAsProjectDependencies(@NotNull ExternalDependency seenDependency,
|
||||
@NotNull ExternalDependency newDependency) {
|
||||
if (seenDependency instanceof ExternalProjectDependency
|
||||
&& newDependency instanceof ExternalProjectDependency) {
|
||||
String seenConfiguration = ((ExternalProjectDependency)seenDependency).getConfigurationName();
|
||||
String newConfiguration = ((ExternalProjectDependency)newDependency).getConfigurationName();
|
||||
return
|
||||
seenDependency.getId().equals(newDependency.getId())
|
||||
&& ((seenConfiguration == newConfiguration) || (seenConfiguration != null && seenConfiguration.equals(newConfiguration)));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void upgradeScopeIfNeeded(@NotNull ExternalDependency targetDependency, @NotNull String newScope) {
|
||||
if (targetDependency.getScope().equals(COMPILE_SCOPE) || !(targetDependency instanceof AbstractExternalDependency)) {
|
||||
|
||||
Reference in New Issue
Block a user