Skip to content

Commit a3eb2f2

Browse files
authored
Support centrally declared repositories in Gradle plugin (#969)
1 parent e9898f5 commit a3eb2f2

5 files changed

Lines changed: 37 additions & 2 deletions

File tree

scip-gradle-plugin/src/main/java/org/scip_code/scip_java/gradle/ScipGradlePlugin.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.ArrayList;
44
import java.util.List;
55
import java.util.Map;
6+
import org.gradle.api.InvalidUserCodeException;
67
import org.gradle.api.Plugin;
78
import org.gradle.api.Project;
89
import org.gradle.api.Task;
@@ -20,8 +21,16 @@ private void configureProject(Project project) {
2021
// Inject Maven Central/local so the indexer (and plugins like protobuf that
2122
// resolve their own artifacts) can resolve dependencies even when the build
2223
// being indexed doesn't declare any repositories of its own.
23-
project.getRepositories().add(project.getRepositories().mavenCentral());
24-
project.getRepositories().add(project.getRepositories().mavenLocal());
24+
try {
25+
project.getRepositories().add(project.getRepositories().mavenCentral());
26+
project.getRepositories().add(project.getRepositories().mavenLocal());
27+
} catch (InvalidUserCodeException exc) {
28+
// FAIL_ON_PROJECT_REPOS forbids project repositories; they are declared
29+
// in settings instead, so the injection isn't needed (issue #847).
30+
project
31+
.getLogger()
32+
.info("scip-java: not injecting Maven Central/local repositories: " + exc.getMessage());
33+
}
2534

2635
Map<String, Object> extraProperties =
2736
project.getExtensions().getExtraProperties().getProperties();

scip-java/src/test/kotlin/tests/GradleBuildToolTest.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@ class GradleBuildToolTest : BuildToolHarness() {
9191
)
9292
)
9393
add(checkGradleBuild("basic", "gradle/basic", expectedScipFiles = 2))
94+
// Regression test: FAIL_ON_PROJECT_REPOS rejects project-level
95+
// repositories, so the plugin must not inject Maven Central/local.
96+
// https://github.com/scip-code/scip-java/issues/847
97+
add(
98+
checkGradleBuild("centralized-repos", "gradle/centralized-repos", expectedScipFiles = 1)
99+
)
94100
add(
95101
checkGradleBuild(
96102
"toolchains",
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
plugins {
2+
id 'java'
3+
}
4+
dependencies {
5+
implementation 'com.google.guava:guava:31.1-jre'
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
dependencyResolutionManagement {
2+
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
3+
repositories {
4+
mavenCentral()
5+
}
6+
}
7+
rootProject.name = 'centralized-repos'
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import com.google.common.collect.ImmutableList;
2+
3+
public class Example {
4+
public static void main(String[] args) {
5+
System.out.println(ImmutableList.of("a", "b"));
6+
}
7+
}

0 commit comments

Comments
 (0)