You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ds...@apache.org on 2026/08/01 16:45:55 UTC

(solr) branch main updated: build: centralize maven repo declarations (#4677)

This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 54758e81b40 build: centralize maven repo declarations (#4677)
54758e81b40 is described below

commit 54758e81b4012796c03bca0b14d403e1d10204ca
Author: David Smiley <ds...@apache.org>
AuthorDate: Sat Aug 1 12:45:50 2026 -0400

    build: centralize maven repo declarations (#4677)
---
 build-tools/build-infra/build.gradle               |  4 +--
 .../build-infra/declare-repositories.gradle        | 42 ++++++++++++++++++++++
 build-tools/build-infra/settings.gradle            |  4 +++
 build-tools/missing-doclet/build.gradle            |  4 +--
 build-tools/missing-doclet/settings.gradle         |  4 +++
 .../PR#4677-buildCentralizeRepoDeclaration.yml     |  8 +++++
 gradle/documentation/markdown.gradle               | 26 +++++++-------
 gradle/globals.gradle                              | 13 +------
 gradle/testing/randomization.gradle                |  6 ++--
 gradle/validation/git-status.gradle                | 15 ++++----
 gradle/validation/jar-checks.gradle                |  4 +--
 gradle/validation/rat-sources.gradle               |  4 +--
 settings.gradle                                    |  5 +--
 solr/docker/build.gradle                           |  8 ++---
 solr/ui/build.gradle.kts                           |  3 +-
 15 files changed, 90 insertions(+), 60 deletions(-)

diff --git a/build-tools/build-infra/build.gradle b/build-tools/build-infra/build.gradle
index 9b5ff387488..bd1a4c04216 100644
--- a/build-tools/build-infra/build.gradle
+++ b/build-tools/build-infra/build.gradle
@@ -20,9 +20,7 @@ plugins {
   alias(libs.plugins.diffplug.spotless) apply false
 }
 
-repositories {
-  mavenCentral()
-}
+apply from: file("declare-repositories.gradle")
 
 group = "org.apache"
 
diff --git a/build-tools/build-infra/declare-repositories.gradle b/build-tools/build-infra/declare-repositories.gradle
new file mode 100644
index 00000000000..111ff365b09
--- /dev/null
+++ b/build-tools/build-infra/declare-repositories.gradle
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Central repository declarations for every consumption scope: plugin resolution
+// (pluginManagement), project dependencies, buildscript classpath, and the
+// build-infra / missing-doclet included builds. Applied via
+// `apply from: <this>, to: <handler>` onto whichever object owns the repositories.
+//
+// Your enterprise mirror: set the `solr.maven.repo.url` system property (via
+// -Dsolr.maven.repo.url=..., or systemProp.solr.maven.repo.url=... in gradle.properties) or
+// the equivalent SOLR_MAVEN_REPO_URL environment variable to route every scope through a
+// single internal mirror (e.g. Artifactory/Nexus) instead of public repositories. System
+// properties and environment variables are inherited by the included builds, so one setting
+// covers the entire build.
+
+def mirrorUrl = System.getProperty('solr.maven.repo.url') ?: System.getenv('SOLR_MAVEN_REPO_URL')
+
+repositories {
+  if (mirrorUrl) {
+    maven {
+      // name = 'yourEnterpriseMirror'
+      url = mirrorUrl
+    }
+  } else {
+    mavenCentral()
+    gradlePluginPortal()
+  }
+}
diff --git a/build-tools/build-infra/settings.gradle b/build-tools/build-infra/settings.gradle
index c03775cb0b9..4e51e03a47a 100644
--- a/build-tools/build-infra/settings.gradle
+++ b/build-tools/build-infra/settings.gradle
@@ -15,6 +15,10 @@
  * limitations under the License.
  */
 
+pluginManagement {
+  apply from: file("declare-repositories.gradle"), to: delegate
+}
+
 rootProject.name = 'build-infra'
 
 // Use project's version catalog for centralized dependency management
diff --git a/build-tools/missing-doclet/build.gradle b/build-tools/missing-doclet/build.gradle
index 11a7fc6e2a8..e973631ba2b 100644
--- a/build-tools/missing-doclet/build.gradle
+++ b/build-tools/missing-doclet/build.gradle
@@ -20,9 +20,7 @@ plugins {
   alias(libs.plugins.diffplug.spotless) apply false
 }
 
-repositories {
-  mavenCentral()
-}
+apply from: file("../build-infra/declare-repositories.gradle")
 
 group = "org.apache.solr.tools"
 description = 'Doclet-based javadoc validation'
diff --git a/build-tools/missing-doclet/settings.gradle b/build-tools/missing-doclet/settings.gradle
index c8abe2fa87f..e32c65d3722 100644
--- a/build-tools/missing-doclet/settings.gradle
+++ b/build-tools/missing-doclet/settings.gradle
@@ -15,6 +15,10 @@
  * limitations under the License.
  */
 
+pluginManagement {
+  apply from: file("../build-infra/declare-repositories.gradle"), to: delegate
+}
+
 rootProject.name = "missing-doclet"
 
 // Use project's version catalog for centralized dependency management
diff --git a/changelog/unreleased/PR#4677-buildCentralizeRepoDeclaration.yml b/changelog/unreleased/PR#4677-buildCentralizeRepoDeclaration.yml
new file mode 100644
index 00000000000..b40fb37d0f7
--- /dev/null
+++ b/changelog/unreleased/PR#4677-buildCentralizeRepoDeclaration.yml
@@ -0,0 +1,8 @@
+title: >
+  Centralize Maven repository declarations for the build.  Can customize with SOLR_MAVEN_REPO_URL.
+type: other
+authors:
+  - name: David Smiley
+links:
+  - name: PR#4677
+    url: https://github.com/apache/solr/pull/4677
diff --git a/gradle/documentation/markdown.gradle b/gradle/documentation/markdown.gradle
index eb9458bdb9c..ee3926a2cdf 100644
--- a/gradle/documentation/markdown.gradle
+++ b/gradle/documentation/markdown.gradle
@@ -15,22 +15,20 @@
  * limitations under the License.
  */
 
-import com.vladsch.flexmark.ast.Heading;
-import com.vladsch.flexmark.ext.abbreviation.AbbreviationExtension;
-import com.vladsch.flexmark.ext.attributes.AttributesExtension;
-import com.vladsch.flexmark.ext.autolink.AutolinkExtension;
-import com.vladsch.flexmark.html.HtmlRenderer;
-import com.vladsch.flexmark.parser.Parser;
-import com.vladsch.flexmark.parser.ParserEmulationProfile;
-import com.vladsch.flexmark.util.ast.Document;
-import com.vladsch.flexmark.util.data.MutableDataSet;
-import com.vladsch.flexmark.util.sequence.Escaping;
-import groovy.text.SimpleTemplateEngine;
+import com.vladsch.flexmark.ast.Heading
+import com.vladsch.flexmark.ext.abbreviation.AbbreviationExtension
+import com.vladsch.flexmark.ext.attributes.AttributesExtension
+import com.vladsch.flexmark.ext.autolink.AutolinkExtension
+import com.vladsch.flexmark.html.HtmlRenderer
+import com.vladsch.flexmark.parser.Parser
+import com.vladsch.flexmark.parser.ParserEmulationProfile
+import com.vladsch.flexmark.util.ast.Document
+import com.vladsch.flexmark.util.data.MutableDataSet
+import com.vladsch.flexmark.util.sequence.Escaping
+import groovy.text.SimpleTemplateEngine
 
 buildscript {
-  repositories {
-    mavenCentral()
-  }
+  apply from: rootProject.file('build-tools/build-infra/declare-repositories.gradle'), to: delegate
 
   dependencies {
     classpath libs.flexmark.flexmark
diff --git a/gradle/globals.gradle b/gradle/globals.gradle
index 38bf41e9a6b..a9e9efe57d3 100644
--- a/gradle/globals.gradle
+++ b/gradle/globals.gradle
@@ -16,7 +16,6 @@
  */
 
 import javax.inject.Inject
-import org.gradle.process.ExecOperations
 
 interface ExecOperationsHolder {
   @Inject
@@ -28,18 +27,8 @@ allprojects {
 
   group "org.apache"
 
-  // def lucenePrereleaseBuild = '9'
-
   // Repositories to fetch dependencies from.
-  repositories {
-    mavenCentral()
-    /* Reenable this if we need it again in future
-    maven {
-      name "LucenePrerelease${lucenePrereleaseBuild}"
-      url "https://nightlies.apache.org/solr/lucene-prereleases/${lucenePrereleaseBuild}/"
-    }
-    */
-  }
+  apply from: rootProject.file('build-tools/build-infra/declare-repositories.gradle'), to: delegate
 
   // Artifacts will have names after full gradle project path
   // so :solr:core will have solr-core.jar, etc.
diff --git a/gradle/testing/randomization.gradle b/gradle/testing/randomization.gradle
index 98787442cc2..d51eac1f9c5 100644
--- a/gradle/testing/randomization.gradle
+++ b/gradle/testing/randomization.gradle
@@ -19,15 +19,13 @@
 // Configure test randomization seeds and derived test properties.
 //
 
-import java.nio.file.*
 import com.carrotsearch.randomizedtesting.SeedUtils
 import com.carrotsearch.randomizedtesting.generators.RandomPicks
+import java.nio.file.Path
 import org.apache.tools.ant.types.Commandline
 
 buildscript {
-  repositories {
-    mavenCentral()
-  }
+  apply from: rootProject.file('build-tools/build-infra/declare-repositories.gradle'), to: delegate
 
   dependencies {
     classpath libs.carrotsearch.randomizedtesting.runner
diff --git a/gradle/validation/git-status.gradle b/gradle/validation/git-status.gradle
index 8893ff7b552..17fa3527511 100644
--- a/gradle/validation/git-status.gradle
+++ b/gradle/validation/git-status.gradle
@@ -17,20 +17,19 @@
 
 // This verifies local git repository's status.
 
-import org.eclipse.jgit.api.*
-import org.eclipse.jgit.storage.file.FileRepositoryBuilder
-import org.eclipse.jgit.errors.*
-
 import java.nio.file.FileVisitResult
 import java.nio.file.Files
-import java.nio.file.SimpleFileVisitor
 import java.nio.file.Path
+import java.nio.file.SimpleFileVisitor
 import java.nio.file.attribute.BasicFileAttributes
+import org.eclipse.jgit.api.Git
+import org.eclipse.jgit.errors.NoWorkTreeException
+import org.eclipse.jgit.errors.NotSupportedException
+import org.eclipse.jgit.errors.RepositoryNotFoundException
+import org.eclipse.jgit.storage.file.FileRepositoryBuilder
 
 buildscript {
-  repositories {
-    mavenCentral()
-  }
+  apply from: rootProject.file('build-tools/build-infra/declare-repositories.gradle'), to: delegate
 
   dependencies {
     classpath libs.eclipse.jgit.jgit
diff --git a/gradle/validation/jar-checks.gradle b/gradle/validation/jar-checks.gradle
index 2dfd434098a..8000ff20b94 100644
--- a/gradle/validation/jar-checks.gradle
+++ b/gradle/validation/jar-checks.gradle
@@ -31,9 +31,7 @@ def failOnError = true
 
 // We're using commons-codec for computing checksums.
 buildscript {
-  repositories {
-    mavenCentral()
-  }
+  apply from: rootProject.file('build-tools/build-infra/declare-repositories.gradle'), to: delegate
 
   dependencies {
     classpath libs.commonscodec.commonscodec
diff --git a/gradle/validation/rat-sources.gradle b/gradle/validation/rat-sources.gradle
index dce061407ca..27c00a4ddf1 100644
--- a/gradle/validation/rat-sources.gradle
+++ b/gradle/validation/rat-sources.gradle
@@ -19,9 +19,7 @@ import groovy.xml.XmlSlurper
 import org.eclipse.jgit.storage.file.FileRepositoryBuilder
 
 buildscript {
-  repositories {
-    mavenCentral()
-  }
+  apply from: rootProject.file('build-tools/build-infra/declare-repositories.gradle'), to: delegate
 
   dependencies {
     classpath libs.eclipse.jgit.jgit
diff --git a/settings.gradle b/settings.gradle
index be01caa7fd7..c942d5857a2 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -16,10 +16,7 @@
  */
 
 pluginManagement {
-  repositories {
-    mavenCentral()
-    gradlePluginPortal()
-  }
+  apply from: file("build-tools/build-infra/declare-repositories.gradle"), to: delegate
 
   includeBuild("build-tools/build-infra")
 }
diff --git a/solr/docker/build.gradle b/solr/docker/build.gradle
index 2674921038d..05fa30e3e45 100644
--- a/solr/docker/build.gradle
+++ b/solr/docker/build.gradle
@@ -17,9 +17,8 @@
 
 import java.util.regex.Matcher
 import java.util.regex.Pattern
-import org.apache.commons.codec.digest.DigestUtils
-import org.gradle.process.ExecOperations
 import javax.inject.Inject
+import org.apache.commons.codec.digest.DigestUtils
 
 description = 'Solr Docker image'
 
@@ -140,9 +139,8 @@ dependencies {
 
 // We're using commons-codec for computing checksums.
 buildscript {
-  repositories {
-    mavenCentral()
-  }
+  apply from: rootProject.file('build-tools/build-infra/declare-repositories.gradle'), to: delegate
+
   dependencies {
     classpath libs.commonscodec.commonscodec
   }
diff --git a/solr/ui/build.gradle.kts b/solr/ui/build.gradle.kts
index b91ee268c90..0d76bafc4d8 100644
--- a/solr/ui/build.gradle.kts
+++ b/solr/ui/build.gradle.kts
@@ -27,8 +27,9 @@ repositories {
             includeGroupAndSubgroups("com.google")
         }
     }
-    mavenCentral()
 }
+// mavenCentral / enterprise mirror, shared with the rest of the build.
+apply(from = rootProject.file("build-tools/build-infra/declare-repositories.gradle"))
 
 plugins {
     alias(libs.plugins.kotlin.multiplatform)