Skip to content

Commit 6be5c69

Browse files
Support gradle versions api url customization (#807)
Co-authored-by: Marcel Sebek <marcel.sebek@deutsche-boerse.com>
1 parent 610f5b2 commit 6be5c69

5 files changed

Lines changed: 21 additions & 11 deletions

File tree

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,12 @@ The default is `release-candidate`. The value can be changed as shown below:
272272
dependencyUpdates.gradleReleaseChannel="current"
273273
```
274274

275+
#### Gradle Versions Api Base URL
276+
277+
The `gradleVersionsApiBaseUrl` task property provides an option for customization of the Gradle versions service URL.
278+
If not specified, the default value https://services.gradle.org/versions/ is used.
279+
The customization can be useful in restricted environments without direct internet access and proxy availability.
280+
275281
#### Constraints
276282

277283
If you use constraints, for example to define a BOM using the [`java-platform`](https://docs.gradle.org/current/userguide/java_platform_plugin.html)

gradle-versions-plugin/src/main/kotlin/com/github/benmanes/gradle/versions/updates/DependencyUpdates.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class DependencyUpdates @JvmOverloads constructor(
2626
val outputDir: String,
2727
val reportfileName: String?,
2828
val checkForGradleUpdate: Boolean,
29+
val gradleVersionsApiBaseUrl: String,
2930
val gradleReleaseChannel: String,
3031
val checkConstraints: Boolean = false,
3132
val checkBuildEnvironmentConstraints: Boolean = false,
@@ -107,7 +108,7 @@ class DependencyUpdates @JvmOverloads constructor(
107108
val upgradeVersions = toMap(versions.upgrade)
108109

109110
// Check for Gradle updates.
110-
val gradleUpdateChecker = GradleUpdateChecker(checkForGradleUpdate)
111+
val gradleUpdateChecker = GradleUpdateChecker(checkForGradleUpdate, gradleVersionsApiBaseUrl)
111112

112113
return DependencyUpdatesReporter(
113114
project, revision, outputFormatterArgument, outputDir,

gradle-versions-plugin/src/main/kotlin/com/github/benmanes/gradle/versions/updates/DependencyUpdatesTask.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ open class DependencyUpdatesTask : DefaultTask() { // tasks can't be final
9292
@Input
9393
var checkForGradleUpdate: Boolean = true
9494

95+
@Input
96+
var gradleVersionsApiBaseUrl: String = "https://services.gradle.org/versions/"
97+
9598
@Input
9699
var checkConstraints: Boolean = false
97100

@@ -128,7 +131,7 @@ open class DependencyUpdatesTask : DefaultTask() { // tasks can't be final
128131
}
129132
val evaluator = DependencyUpdates(
130133
project, resolutionStrategyAction, revision,
131-
outputFormatter(), outputDir, reportfileName, checkForGradleUpdate,
134+
outputFormatter(), outputDir, reportfileName, checkForGradleUpdate, gradleVersionsApiBaseUrl,
132135
gradleReleaseChannel, checkConstraints, checkBuildEnvironmentConstraints,
133136
filterConfigurations
134137
)

gradle-versions-plugin/src/main/kotlin/com/github/benmanes/gradle/versions/updates/gradle/GradleUpdateChecker.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ import java.util.concurrent.TimeUnit
1818
*/
1919
class GradleUpdateChecker(
2020
val enabled: Boolean = true,
21+
private val gradleVersionsApiBaseUrl: String,
2122
) {
2223

2324
init {
2425
if (enabled) {
25-
fetch()
26+
fetch(gradleVersionsApiBaseUrl)
2627
}
2728
}
2829

@@ -84,7 +85,6 @@ class GradleUpdateChecker(
8485
private val cacheMap = EnumMap<GradleReleaseChannel, ReleaseStatus>(
8586
GradleReleaseChannel::class.java
8687
)
87-
private const val API_BASE_URL = "https://services.gradle.org/versions/"
8888
private const val CLIENT_TIME_OUT = 15_000L
8989
private val client: OkHttpClient = OkHttpClient.Builder()
9090
.connectTimeout(CLIENT_TIME_OUT, TimeUnit.SECONDS)
@@ -95,17 +95,17 @@ class GradleUpdateChecker(
9595
.addLast(KotlinJsonAdapterFactory())
9696
.build()
9797

98-
/** Represents the XML from [API_BASE_URL] */
98+
/** Represents the XML from [gradleVersionsApiBaseUrl] */
9999
private class VersionSite {
100100
var version: String? = null
101101
}
102102

103-
private fun fetch() {
103+
private fun fetch(gradleVersionsApiBaseUrl: String) {
104104
for (it in GradleReleaseChannel.values()) {
105105
try {
106106
client.newCall(
107107
Request.Builder()
108-
.url(API_BASE_URL + it.id)
108+
.url(gradleVersionsApiBaseUrl + it.id)
109109
.build()
110110
).execute().use { response ->
111111
response.body?.source()?.let { body ->

gradle-versions-plugin/src/test/groovy/com/github/benmanes/gradle/versions/DependencyUpdatesSpec.groovy

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ final class DependencyUpdatesSpec extends Specification {
582582
}
583583

584584
when:
585-
def reporter = evaluate(project, 'milestone', 'plain', 'build', null, null, true, CURRENT.id)
585+
def reporter = evaluate(project, 'milestone', 'plain', 'build', null, null, true, "", CURRENT.id)
586586
reporter.write()
587587

588588
then:
@@ -619,7 +619,7 @@ final class DependencyUpdatesSpec extends Specification {
619619
addRepositoryTo(project)
620620

621621
when:
622-
def reporter = evaluate(project, 'milestone', null, 'build', null,null, false, RELEASE_CANDIDATE.id, {config -> config.name.equals("upgradesFound")})
622+
def reporter = evaluate(project, 'milestone', null, 'build', null,null, false, "", RELEASE_CANDIDATE.id, {config -> config.name.equals("upgradesFound")})
623623
reporter.write()
624624

625625
then:
@@ -645,10 +645,10 @@ final class DependencyUpdatesSpec extends Specification {
645645

646646
private static def evaluate(project, revision = 'milestone', outputFormatter = null,
647647
outputDir = 'build', resolutionStrategy = null, reportfileName = null,
648-
checkForGradleUpdate = true, gradleReleaseChannel = RELEASE_CANDIDATE.id,
648+
checkForGradleUpdate = true, gradleVersionsApiBaseUrl = "", gradleReleaseChannel = RELEASE_CANDIDATE.id,
649649
configurationFilter = { true }) {
650650
new DependencyUpdates(project, resolutionStrategy, revision, buildOutputFormatter(outputFormatter), outputDir,
651-
reportfileName, checkForGradleUpdate, gradleReleaseChannel, false, false, configurationFilter).run()
651+
reportfileName, checkForGradleUpdate, gradleVersionsApiBaseUrl, gradleReleaseChannel, false, false, configurationFilter).run()
652652
}
653653

654654
private static OutputFormatterArgument buildOutputFormatter(outputFormatter) {

0 commit comments

Comments
 (0)