mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[gradle] [IDEA-314169] do not download dependency sources if registry flag set
GitOrigin-RevId: 85c53509498f4450f86c187f23872646dc5c2713
This commit is contained in:
committed by
intellij-monorepo-bot
parent
84a915c3f9
commit
ea3ca486a8
+3
@@ -576,6 +576,9 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver<Grad
|
||||
private static void configureExecutionArgumentsAndVmOptions(@NotNull GradleExecutionSettings executionSettings,
|
||||
@NotNull DefaultProjectResolverContext resolverCtx,
|
||||
boolean isBuildSrcProject) {
|
||||
if (!Registry.is("idea.disable.gradle.download.sources", true)) {
|
||||
executionSettings.withArgument("-Didea.disable.gradle.download.sources=false");
|
||||
}
|
||||
executionSettings.withArgument("-Didea.sync.active=true");
|
||||
if (resolverCtx.isResolveModulePerSourceSet()) {
|
||||
executionSettings.withArgument("-Didea.resolveSourceSetDependencies=true");
|
||||
|
||||
+91
@@ -1941,6 +1941,79 @@ public class GradleDependenciesImportingTest extends GradleImportingTestCase {
|
||||
}, "project.main", "lib-1.jar", "lib-2.jar");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSourcesExcludedFromGradleCacheOnDisabledFlag() throws Exception {
|
||||
setRegistryPropertyForTest("idea.disable.gradle.download.sources", "false");
|
||||
overrideGradleUserHome("project/cache");
|
||||
var dependency = "junit:junit:4.12";
|
||||
var dependencyName = "Gradle: junit:junit:4.12";
|
||||
var dependencyJar = "junit-4.12.jar";
|
||||
|
||||
importProject(script(it -> {
|
||||
it
|
||||
.withJavaPlugin()
|
||||
.withMavenCentral()
|
||||
.addTestImplementationDependency(dependency);
|
||||
}));
|
||||
|
||||
LibraryOrderEntry regularLibFromGradleCache = assertSingleLibraryOrderEntry("project.test", dependencyName);
|
||||
assertNoSourcesAndDocsInGradleCache(dependencyJar, regularLibFromGradleCache);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSourcesExcludedFromGradleCacheOnDisabledFlagWithIdeaPlugin() throws Exception {
|
||||
setRegistryPropertyForTest("idea.disable.gradle.download.sources", "false");
|
||||
overrideGradleUserHome("project/cache");
|
||||
var dependency = "junit:junit:4.12";
|
||||
var dependencyName = "Gradle: junit:junit:4.12";
|
||||
var dependencyJar = "junit-4.12.jar";
|
||||
|
||||
importProject(script(it -> {
|
||||
it
|
||||
.withJavaPlugin()
|
||||
.withIdeaPlugin()
|
||||
.withMavenCentral()
|
||||
.addTestImplementationDependency(dependency);
|
||||
}));
|
||||
|
||||
LibraryOrderEntry regularLibFromGradleCache = assertSingleLibraryOrderEntry("project.test", dependencyName);
|
||||
assertNoSourcesAndDocsInGradleCache(dependencyJar, regularLibFromGradleCache);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSourcesExcludedFromGradleMultiModuleProjectCacheOnDisabledFlag() throws Exception {
|
||||
setRegistryPropertyForTest("idea.disable.gradle.download.sources", "false");
|
||||
overrideGradleUserHome("project/cache");
|
||||
var dependency = "junit:junit:4.12";
|
||||
var dependencyName = "Gradle: junit:junit:4.12";
|
||||
var dependencyJar = "junit-4.12.jar";
|
||||
|
||||
createSettingsFile("include 'projectA', 'projectB' ");
|
||||
importProject(
|
||||
createBuildScriptBuilder()
|
||||
.project(":projectA", it -> {
|
||||
it
|
||||
.withJavaPlugin()
|
||||
.withIdeaPlugin()
|
||||
.withMavenCentral()
|
||||
.addTestImplementationDependency(dependency);
|
||||
})
|
||||
.project(":projectB", it -> {
|
||||
it
|
||||
.withJavaPlugin()
|
||||
.withMavenCentral()
|
||||
.addTestImplementationDependency(dependency);
|
||||
})
|
||||
.generate()
|
||||
);
|
||||
|
||||
LibraryOrderEntry projectADependencyEntry = assertSingleLibraryOrderEntry("project.projectA.test", dependencyName);
|
||||
assertNoSourcesAndDocsInGradleCache(dependencyJar, projectADependencyEntry);
|
||||
|
||||
LibraryOrderEntry projectBDependencyEntry = assertSingleLibraryOrderEntry("project.projectB.test", dependencyName);
|
||||
assertNoSourcesAndDocsInGradleCache(dependencyJar, projectBDependencyEntry);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSourcesJavadocAttachmentFromGradleCache() throws Exception {
|
||||
var dependency = "junit:junit:4.12";
|
||||
@@ -2218,6 +2291,24 @@ public class GradleDependenciesImportingTest extends GradleImportingTestCase {
|
||||
});
|
||||
}
|
||||
|
||||
private void assertNoSourcesAndDocsInGradleCache(String dependencyJar, LibraryOrderEntry regularLibFromGradleCache) {
|
||||
assertThat(regularLibFromGradleCache.getRootFiles(OrderRootType.CLASSES))
|
||||
.hasSize(1)
|
||||
.allSatisfy(file -> assertEquals(dependencyJar, file.getName()));
|
||||
|
||||
String binaryPath = PathUtil.getLocalPath(regularLibFromGradleCache.getRootFiles(OrderRootType.CLASSES)[0]);
|
||||
Ref<Boolean> sourceFound = Ref.create(false);
|
||||
Ref<Boolean> docFound = Ref.create(false);
|
||||
try {
|
||||
checkIfSourcesOrJavadocsCanBeAttached(binaryPath, sourceFound, docFound);
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new IllegalStateException("Unable to lookup dependency artifacts in " + binaryPath);
|
||||
}
|
||||
assertFalse(sourceFound.get());
|
||||
assertFalse(docFound.get());
|
||||
}
|
||||
|
||||
private static void checkIfSourcesOrJavadocsCanBeAttached(String binaryPath,
|
||||
Ref<Boolean> sourceFound,
|
||||
Ref<Boolean> docFound) throws IOException {
|
||||
|
||||
+22
@@ -587,4 +587,26 @@ public abstract class GradleImportingTestCase extends JavaExternalSystemImportin
|
||||
protected void enableGradleDebugWithSuspend() {
|
||||
GradleSystemSettings.getInstance().setGradleVmOptions("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005");
|
||||
}
|
||||
|
||||
protected void overrideGradleUserHome(@NotNull String relativeUserHomePath) throws IOException {
|
||||
String gradleUserHome = "%s/%s".formatted(myTestDir.getPath(), relativeUserHomePath);
|
||||
String gradleCachedFolderName = "gradle-%s-bin".formatted(gradleVersion);
|
||||
File cachedGradleDistribution = findGradleDistributionInCache(gradleCachedFolderName);
|
||||
if (cachedGradleDistribution != null) {
|
||||
File targetGradleDistribution = Path.of(gradleUserHome + "/wrapper/dists/" + gradleCachedFolderName)
|
||||
.toFile();
|
||||
FileUtil.copyDir(cachedGradleDistribution, targetGradleDistribution);
|
||||
}
|
||||
GradleSettings.getInstance(myProject).setServiceDirectoryPath(gradleUserHome);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static File findGradleDistributionInCache(String gradleCachedFolderName) {
|
||||
Path pathToGradleWrapper = StartParameter.DEFAULT_GRADLE_USER_HOME.toPath().resolve("wrapper/dists/" + gradleCachedFolderName);
|
||||
File gradleWrapperFile = pathToGradleWrapper.toFile();
|
||||
if (gradleWrapperFile.exists()) {
|
||||
return gradleWrapperFile;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user