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 d6c8095371e New gradle runDev alternative to "dev" (#3816)
d6c8095371e is described below

commit d6c8095371ed571545ca9a566a237a2a695cfbab
Author: David Smiley <[email protected]>
AuthorDate: Fri Nov 7 17:40:15 2025 -0500

    New gradle runDev alternative to "dev" (#3816)
---
 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..47cde864f53 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 runDev
+
+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 feab0004d4a..33fd9197bb3 100644
--- a/solr/packaging/build.gradle
+++ b/solr/packaging/build.gradle
@@ -215,6 +215,39 @@ artifacts {
   solrSlimTgz(slimDistTar)
 }
 
+tasks.register('runDev', 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: 
-Dsolr.port.listen=8983"
+  }
+
+  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 '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 (override defaults above)
+  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()}",

Reply via email to