Creating a core is nothing more than a core.properties file on disk.  After
you stop/start Solr with creating a core, see for yourself.  There's
nothing magic there.  The data directory can be empty of the index.

On Thu, Dec 12, 2024 at 1:50 PM John Whelan <j...@whelanlabs.com> wrote:

>   All,
>
> I've been trying to use Gradle to start a Solr instance, create a core, and
> then shut down the instance. I'm doing this to produce an installer to
> deploy a preconfigured deployment of Nutch, along with Hadoop and
> Solr, onto Windows machines. I've been trying a variety of approaches and
> have realized I have no idea how to do this. Is there an existing example
> that is known to work? Below is my initial code. It seemed an obvious
> approach, but after days of making changes to it involving nesting
> operations into bat scripts, trying API calls, and even kill commands, I
> realized it was probably a completely wrong approach.
>
> Thanks in advance,
> John
>
> P.S. I run this via "gradle setupAndCreateCore --info --stacktrace", where
> the solar distribution is in a ./solr directory from the build.gradle file.
>
>
> plugins {
>     id 'base' // Base plugin for lifecycle tasks
> }
>
> // def solrHome = "$buildDir/solr"  // Define a working directory for Solr
> def solrHome = "$projectDir/solr"  // Define a working directory for Solr
>
> def solrPort = 8983
>
> def solrCoreName = "nutch"
> def solrConfigDir = "server/solr/configsets/nutch/conf"
>
> def solrExecutable = "${solrHome}/bin/solr.cmd" // Use bin/solr for
> Linux/Mac
>
> // Task to download and extract Solr if necessary
> task setupSolr {
>     description = 'Sets up Solr directory if not already set up.'
>     doLast {
>         println "Ensure Solr is installed and accessible."
>     }
> }
>
> // Task to start the Solr instance
> task startSolr(dependsOn: setupSolr) {
>     description = 'Starts the Solr instance.'
>     doLast {
>         exec {
>             workingDir solrHome
>             commandLine solrExecutable, 'start', '-p', solrPort.toString()
>         }
>     }
> }
>
> // Task to create a new core
> task createCore(dependsOn: startSolr) {
>     description = 'Creates a new Solr core.'
>     doLast {
>         exec {
>             workingDir solrHome
>             commandLine solrExecutable, 'create', '-p',
> solrPort.toString(), '-c', solrCoreName, '-d', solrConfigDir
>         }
>     }
> }
>
> // Task to stop the Solr instance
> task stopSolr {
>     description = 'Stops the Solr instance.'
>     doLast {
>         exec {
>             workingDir solrHome
>             commandLine solrExecutable, 'stop', '-p', solrPort.toString()
>         }
>     }
> }
>
> // A lifecycle task to handle all operations
> task setupAndCreateCore {
>     description = 'Sets up Solr, starts it, creates the core, and shuts it
> down.'
>     dependsOn startSolr, createCore, stopSolr
> }
>

Reply via email to