From 2621ef8f9943862db79d382f28cbefd1fc197941 Mon Sep 17 00:00:00 2001 From: David Smiley Date: Mon, 27 Oct 2025 12:14:39 -0400 Subject: [PATCH 1/4] New runDevSlim alternative to "dev" --- dev-docs/gradle-help/workflow.txt | 11 +++++++---- gradle/help.gradle | 2 +- solr/packaging/build.gradle | 33 +++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/dev-docs/gradle-help/workflow.txt b/dev-docs/gradle-help/workflow.txt index a50063334ab..ce269a6fdf6 100644 --- a/dev-docs/gradle-help/workflow.txt +++ b/dev-docs/gradle-help/workflow.txt @@ -31,15 +31,18 @@ Put together a local Solr binary "distribution" folder: gradlew -p solr/packaging assemble ls solr/packaging/build/solr-* # expanded directory -For quick local development -gradlew -p solr/packaging dev -ls solr/packaging/build/dev # expanded directory +Build & run Solr directly from Gradle, skipping "bin/solr", retaining data between runs: +gradlew -p solr/packaging runDevSlim + +Build & run Solr, retaining data between runs: +gradlew -p solr/packaging devSlim +(cd solr/packaging/build/dev-slim && bin/solr start -f) Generate the release tar archive (see publishing.txt for details) gradlew -p solr/distribution assembleRelease ls solr/distribution/build/release # release archives -Build a docker image from the local repository (see docker/gradle-help.txt for more) +Build & run a docker image from the local repository (see docker/gradle-help.txt for more) gradlew dockerBuild dockerTag docker run --rm -p 8983:8983 apache/solr:9.0.0-SNAPSHOT diff --git a/gradle/help.gradle b/gradle/help.gradle index f17b4067efb..3e3e5f957d8 100644 --- a/gradle/help.gradle +++ b/gradle/help.gradle @@ -46,7 +46,7 @@ configure(rootProject) { doLast { println "" println "This is the Solr gradle build. See some guidelines, " - println "ant-equivalent commands, etc. under help/*; or type:" + println "ant-equivalent commands, etc. under dev-docs/gradle-help/*; or type:" println "" helpFiles.each { section, path, sectionInfo -> println String.format(Locale.ROOT, diff --git a/solr/packaging/build.gradle b/solr/packaging/build.gradle index 8d0e8723b61..64abf34cd07 100644 --- a/solr/packaging/build.gradle +++ b/solr/packaging/build.gradle @@ -215,6 +215,39 @@ artifacts { solrSlimTgz(slimDistTar) } +tasks.register('run', JavaExec) { + group = 'application' + description = 'Starts Solr for local experimentation. Does NOT use the bin/solr script.' + dependsOn 'devSlim' + + workingDir = file("$slimDevDir/server") + + // Intentionally not synchronizing the logic here with bin/solr; don't want the burden + + doFirst { + println "To attach a debugger, at the CLI pass: --debug-jvm" + println "To pass JVM args, at the CLI pass: -PjvmArgs='--add-modules jdk.incubator.vector'" + println "To pass system properties, at the CLI pass: -Djetty.port=8983" + } + + maxHeapSize = project.findProperty('maxHeapSize') ?: '1G' + + jvmArgs((project.findProperty('jvmArgs') ?: '').split()) + + systemProperty 'host', 'localhost' + systemProperty 'jetty.port', '8983' + systemProperty 'solr.install.dir', file("$workingDir/..") + systemProperty 'solr.logs.dir', file("$workingDir/logs") + systemProperty 'solr.zookeeper.server.enabled', 'true' // SolrCloud; embedded ZK + + // Propagate CLI system properties + systemProperties += gradle.startParameter.systemPropertiesArgs + + classpath = files("$workingDir/start.jar") + + args((project.findProperty('args') ?: '--module=http').split()) +} + task downloadBats(type: NpmTask) { group = 'Build Dependency Download' args = ["install", "https://github.com/bats-core/bats-core#v${libs.versions.bats.core.get()}", From da7166610758501806121e4f24c62b87d03d16a2 Mon Sep 17 00:00:00 2001 From: David Smiley Date: Mon, 27 Oct 2025 13:42:50 -0400 Subject: [PATCH 2/4] New runDevSlim alternative to "dev" --- solr/packaging/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/solr/packaging/build.gradle b/solr/packaging/build.gradle index 64abf34cd07..bc80095bd41 100644 --- a/solr/packaging/build.gradle +++ b/solr/packaging/build.gradle @@ -215,7 +215,7 @@ artifacts { solrSlimTgz(slimDistTar) } -tasks.register('run', JavaExec) { +tasks.register('runDevSlim', JavaExec) { group = 'application' description = 'Starts Solr for local experimentation. Does NOT use the bin/solr script.' dependsOn 'devSlim' @@ -232,6 +232,7 @@ tasks.register('run', JavaExec) { maxHeapSize = project.findProperty('maxHeapSize') ?: '1G' + jvmArgs = [] // don't use defaults from our build that assume this is a typical build task jvmArgs((project.findProperty('jvmArgs') ?: '').split()) systemProperty 'host', 'localhost' From 458d54af889ad6c5e688a4608b32e69b771909ce Mon Sep 17 00:00:00 2001 From: David Smiley Date: Wed, 5 Nov 2025 00:44:34 -0500 Subject: [PATCH 3/4] solr.port.listen --- solr/packaging/build.gradle | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/solr/packaging/build.gradle b/solr/packaging/build.gradle index 03ac1c58c0e..f0699646e93 100644 --- a/solr/packaging/build.gradle +++ b/solr/packaging/build.gradle @@ -227,7 +227,7 @@ tasks.register('runDevSlim', JavaExec) { doFirst { println "To attach a debugger, at the CLI pass: --debug-jvm" println "To pass JVM args, at the CLI pass: -PjvmArgs='--add-modules jdk.incubator.vector'" - println "To pass system properties, at the CLI pass: -Djetty.port=8983" + println "To pass system properties, at the CLI pass: -Dsolr.port.listen=8983" } maxHeapSize = project.findProperty('maxHeapSize') ?: '1G' @@ -235,13 +235,12 @@ tasks.register('runDevSlim', JavaExec) { jvmArgs = [] // don't use defaults from our build that assume this is a typical build task jvmArgs((project.findProperty('jvmArgs') ?: '').split()) - systemProperty 'host', 'localhost' - systemProperty 'jetty.port', '8983' + systemProperty 'solr.port.listen', '8983' systemProperty 'solr.install.dir', file("$workingDir/..") systemProperty 'solr.logs.dir', file("$workingDir/logs") systemProperty 'solr.zookeeper.server.enabled', 'true' // SolrCloud; embedded ZK - // Propagate CLI system properties + // Propagate CLI system properties (override defaults above) systemProperties += gradle.startParameter.systemPropertiesArgs classpath = files("$workingDir/start.jar") From 4c23cd38134fbdffb2b7b6c85d0f85da2035621c Mon Sep 17 00:00:00 2001 From: David Smiley Date: Wed, 5 Nov 2025 17:35:10 -0500 Subject: [PATCH 4/4] Rename runDevSlim to runDev --- dev-docs/gradle-help/workflow.txt | 2 +- solr/packaging/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-docs/gradle-help/workflow.txt b/dev-docs/gradle-help/workflow.txt index ce269a6fdf6..47cde864f53 100644 --- a/dev-docs/gradle-help/workflow.txt +++ b/dev-docs/gradle-help/workflow.txt @@ -32,7 +32,7 @@ gradlew -p solr/packaging assemble ls solr/packaging/build/solr-* # expanded directory Build & run Solr directly from Gradle, skipping "bin/solr", retaining data between runs: -gradlew -p solr/packaging runDevSlim +gradlew -p solr/packaging runDev Build & run Solr, retaining data between runs: gradlew -p solr/packaging devSlim diff --git a/solr/packaging/build.gradle b/solr/packaging/build.gradle index f0699646e93..33fd9197bb3 100644 --- a/solr/packaging/build.gradle +++ b/solr/packaging/build.gradle @@ -215,7 +215,7 @@ artifacts { solrSlimTgz(slimDistTar) } -tasks.register('runDevSlim', JavaExec) { +tasks.register('runDev', JavaExec) { group = 'application' description = 'Starts Solr for local experimentation. Does NOT use the bin/solr script.' dependsOn 'devSlim'