Skip to content

Commit 8d19454

Browse files
committed
Only use fallback mirror when it is set.
1 parent 6bf1e66 commit 8d19454

3 files changed

Lines changed: 64 additions & 30 deletions

File tree

buildSrc/build.gradle.kts

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818
import java.net.HttpURLConnection
1919
import java.net.URL
20+
import java.util.Properties
2021

2122
fun checkMavenCentralAccessibility(testUrl: String): Boolean {
2223
val accessible = try {
@@ -30,19 +31,26 @@ fun checkMavenCentralAccessibility(testUrl: String): Boolean {
3031
} catch (e: Exception) {
3132
false
3233
}
34+
return accessible
35+
}
3336

34-
if (accessible) {
35-
logger.lifecycle("Maven Central is accessible. Using default repositories for buildSrc.")
36-
} else {
37-
logger.lifecycle("Maven Central is not accessible. Falling back to Google Maven Mirror for buildSrc.")
37+
val parentProperties = Properties().apply {
38+
val file = file("../gradle.properties")
39+
if (file.exists()) {
40+
file.inputStream().use { load(it) }
3841
}
39-
return accessible
4042
}
4143

42-
val mavenCentralTestUrl = providers.gradleProperty("mavenCentralTestUrl").getOrElse("https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom")
43-
val mavenCentralMirrorUrl = providers.gradleProperty("mavenCentralMirrorUrl").getOrElse("https://maven-central.storage-download.googleapis.com/maven2/")
44+
val mavenCentralTestUrl = parentProperties.getProperty("mavenCentralTestUrl")
45+
val mavenCentralMirrorUrl = parentProperties.getProperty("mavenCentralMirrorUrl")
4446

45-
val isMavenAccessible = checkMavenCentralAccessibility(mavenCentralTestUrl)
47+
val isMavenAccessible = if (!mavenCentralTestUrl.isNullOrBlank()) {
48+
checkMavenCentralAccessibility(mavenCentralTestUrl)
49+
} else {
50+
true
51+
}
52+
53+
val useFallbackMirror = !isMavenAccessible && !mavenCentralMirrorUrl.isNullOrBlank()
4654

4755
// Plugins for configuring _this build_ of the module
4856
plugins {
@@ -53,8 +61,16 @@ plugins {
5361

5462
// Define the set of repositories required to fetch and enable plugins.
5563
repositories {
56-
if (!isMavenAccessible) {
57-
maven { url = uri(mavenCentralMirrorUrl) }
64+
if (isMavenAccessible) {
65+
logger.lifecycle("Maven Central is accessible. Using default repositories for buildSrc.")
66+
} else if (useFallbackMirror) {
67+
logger.lifecycle("Maven Central is not accessible. Falling back to Google Maven Mirror for buildSrc.")
68+
} else {
69+
logger.lifecycle("Maven Central is not accessible and no mirror is configured. Using default repositories for buildSrc.")
70+
}
71+
72+
if (useFallbackMirror) {
73+
maven { url = uri(mavenCentralMirrorUrl!!) }
5874
}
5975
maven { url = uri("https://plugins.gradle.org/m2/") }
6076
maven {

buildSrc/src/main/groovy/org/apache/beam/gradle/Repositories.groovy

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ class Repositories {
3030
if (isMavenAccessible != null) {
3131
return isMavenAccessible
3232
}
33-
def testUrl = project.findProperty("mavenCentralTestUrl") ?: "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom"
33+
def testUrl = project.findProperty("mavenCentralTestUrl")
34+
if (!testUrl) {
35+
isMavenAccessible = true
36+
return isMavenAccessible
37+
}
3438
try {
3539
def url = new URL(testUrl)
3640
def connection = (HttpURLConnection) url.openConnection()
@@ -44,16 +48,22 @@ class Repositories {
4448
isMavenAccessible = false
4549
}
4650

51+
def mirrorUrl = project.findProperty("mavenCentralMirrorUrl")
52+
def useFallback = !isMavenAccessible && mirrorUrl
53+
4754
if (isMavenAccessible) {
4855
println "Maven Central is accessible. Using default repositories."
49-
} else {
56+
} else if (useFallback) {
5057
println "Maven Central is not accessible. Redirecting to Google Maven Mirror."
58+
} else {
59+
println "Maven Central is not accessible and no mirror is configured. Using default repositories."
5160
}
5261
return isMavenAccessible
5362
}
5463

5564
static void register(Project project) {
56-
def mirrorUrl = project.findProperty("mavenCentralMirrorUrl") ?: "https://maven-central.storage-download.googleapis.com/maven2/"
65+
def mirrorUrl = project.findProperty("mavenCentralMirrorUrl")
66+
def useFallback = !checkMavenCentral(project) && mirrorUrl
5767

5868
project.repositories {
5969
maven { url project.offlineRepositoryRoot }
@@ -67,7 +77,7 @@ class Repositories {
6777
return
6878
}
6979

70-
if (checkMavenCentral(project)) {
80+
if (!useFallback) {
7181
mavenCentral()
7282
} else {
7383
maven { url mirrorUrl }
@@ -103,7 +113,7 @@ class Repositories {
103113
project.offlineDependencies {
104114
repositories {
105115
mavenLocal()
106-
if (checkMavenCentral(project)) {
116+
if (!useFallback) {
107117
mavenCentral()
108118
} else {
109119
maven { url mirrorUrl }

settings.gradle.kts

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,30 +18,38 @@
1818
import com.gradle.enterprise.gradleplugin.internal.extension.BuildScanExtensionWithHiddenFeatures
1919

2020
pluginManagement {
21-
val mavenCentralTestUrl = settings.providers.gradleProperty("mavenCentralTestUrl").getOrElse("https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.pom")
22-
val mavenCentralMirrorUrl = settings.providers.gradleProperty("mavenCentralMirrorUrl").getOrElse("https://maven-central.storage-download.googleapis.com/maven2/")
21+
val mavenCentralTestUrl = settings.providers.gradleProperty("mavenCentralTestUrl").orNull
22+
val mavenCentralMirrorUrl = settings.providers.gradleProperty("mavenCentralMirrorUrl").orNull
2323

24-
val isMavenAccessible = try {
25-
val connection = java.net.URL(mavenCentralTestUrl).openConnection() as java.net.HttpURLConnection
26-
connection.requestMethod = "GET"
27-
connection.setRequestProperty("User-Agent", "Gradle")
28-
connection.connectTimeout = 2000
29-
connection.readTimeout = 2000
30-
connection.useCaches = false
31-
connection.responseCode == 200
32-
} catch (e: Exception) {
33-
false
24+
val isMavenAccessible = if (!mavenCentralTestUrl.isNullOrBlank()) {
25+
try {
26+
val connection = java.net.URL(mavenCentralTestUrl).openConnection() as java.net.HttpURLConnection
27+
connection.requestMethod = "GET"
28+
connection.setRequestProperty("User-Agent", "Gradle")
29+
connection.connectTimeout = 2000
30+
connection.readTimeout = 2000
31+
connection.useCaches = false
32+
connection.responseCode == 200
33+
} catch (e: Exception) {
34+
false
35+
}
36+
} else {
37+
true
3438
}
3539

40+
val useFallbackMirror = !isMavenAccessible && !mavenCentralMirrorUrl.isNullOrBlank()
41+
3642
if (isMavenAccessible) {
3743
logger.lifecycle("Maven Central is accessible. Using default repositories for settings plugins.")
38-
} else {
44+
} else if (useFallbackMirror) {
3945
logger.lifecycle("Maven Central is not accessible. Falling back to Google Maven Mirror for settings plugins.")
46+
} else {
47+
logger.lifecycle("Maven Central is not accessible and no mirror is configured. Using default repositories for settings plugins.")
4048
}
4149

4250
repositories {
43-
if (!isMavenAccessible) {
44-
maven { url = uri(mavenCentralMirrorUrl) }
51+
if (useFallbackMirror) {
52+
maven { url = uri(mavenCentralMirrorUrl!!) }
4553
}
4654
gradlePluginPortal()
4755
}

0 commit comments

Comments
 (0)