<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>10628831</buildableDurationMillis><buildableTimeMillis>10628831</buildableTimeMillis><buildingDurationMillis>235749</buildingDurationMillis><executingTimeMillis>235749</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7307</waitingDurationMillis><waitingTimeMillis>7307</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>2341</buildNumber><marked><SHA1>255e9e7b85efb801f4dad1c557aaa4ff5d6c4e0e</SHA1><branch><SHA1>255e9e7b85efb801f4dad1c557aaa4ff5d6c4e0e</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>255e9e7b85efb801f4dad1c557aaa4ff5d6c4e0e</SHA1><branch><SHA1>255e9e7b85efb801f4dad1c557aaa4ff5d6c4e0e</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>255e9e7b85efb801f4dad1c557aaa4ff5d6c4e0e</SHA1><branch><SHA1>255e9e7b85efb801f4dad1c557aaa4ff5d6c4e0e</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://gitbox.apache.org/repos/asf/solr.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#2341</displayName><duration>235749</duration><estimatedDuration>242732</estimatedDuration><fullDisplayName>Solr » Solr-Maven-Snapshots-main #2341</fullDisplayName><id>2341</id><inProgress>false</inProgress><keepLog>false</keepLog><number>2341</number><queueId>21843330</queueId><result>SUCCESS</result><timestamp>1783751836370</timestamp><url>https://ci-builds.apache.org/job/Solr/job/Solr-Maven-Snapshots-main/2341/</url><builtOn>lucene-solr-3</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>settings.gradle</affectedPath><affectedPath>build.gradle</affectedPath><affectedPath>solr/webapp/gradle.lockfile</affectedPath><affectedPath>solr/webapp/build.gradle</affectedPath><affectedPath>solr/webapp/js-client/build.gradle.kts</affectedPath><affectedPath>solr/webapp/js-client/gradle.lockfile</affectedPath><affectedPath>solr/solr-ref-guide/build.gradle</affectedPath><affectedPath>gradle/node.gradle</affectedPath><commitId>255e9e7b85efb801f4dad1c557aaa4ff5d6c4e0e</commitId><timestamp>1783740077000</timestamp><author><absoluteUrl>https://ci-builds.apache.org/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>build: decouple JS API client bundling into an optional module (#4603)

The OpenAPI-generated JS client (npm install + babel build + browserify bundle)
was embedded directly in :solr:webapp's build.gradle, making that module quietly
depend on npm/node for something unrelated to compiling/packaging the webapp
itself. Pull it out into its own module, :solr:webapp:js-client, which exposes
the built bundle via a `jsClientBundle` configuration that :solr:webapp now
consumes as a normal cross-project dependency (mirroring how it already consumes
:solr:server's serverLib/solrCore and :solr:api's jsClient outputs), instead of
:solr:webapp defining the npm tasks and reaching into its own local task outputs.

Also make the JS client bundle optional, mirroring the existing disableUiModule
pattern:
- settings.gradle: new -PdisableJsClient=true flag (gradle.ext.withJsClient),
  excluding :solr:webapp:js-client from the build entirely when set.
- solr/webapp/build.gradle: the generatedJSClientBundle dependency is only added
  when the flag is on; the war{} block's from(configurations.generatedJSClientBundle)
  is left unconditional since an empty configuration is already a safe no-op.

Refactor gradle/node.gradle so it no longer hardcodes which projects need
node/npm.
</comment><date>2026-07-10 23:21:17 -0400</date><id>255e9e7b85efb801f4dad1c557aaa4ff5d6c4e0e</id><msg>build: decouple JS API client bundling into an optional module (#4603)</msg><path><editType>edit</editType><file>solr/solr-ref-guide/build.gradle</file></path><path><editType>edit</editType><file>solr/webapp/build.gradle</file></path><path><editType>edit</editType><file>build.gradle</file></path><path><editType>add</editType><file>solr/webapp/js-client/build.gradle.kts</file></path><path><editType>add</editType><file>solr/webapp/js-client/gradle.lockfile</file></path><path><editType>edit</editType><file>settings.gradle</file></path><path><editType>edit</editType><file>solr/webapp/gradle.lockfile</file></path><path><editType>edit</editType><file>gradle/node.gradle</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://ci-builds.apache.org/user/github</absoluteUrl><fullName>github</fullName></culprit></freeStyleBuild>