Scaps is a search engine for discovering functionality in Scala libraries. You can use both type signatures and keywords to search for definitions.
Scaps is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with Scaps, You can obtain one at http://mozilla.org/MPL/2.0/.
Changes to the search algorithm can be evaluated with the test collections defined in evaluation/src/main/resources/
. To benchmark the core library with the standard parametrization, run
sbt ’evaluation/run-main scaps.evaluation.Benchmark’
The SBT plug-in has to be published to a maven repository before it can be used in an SBT project. To publish all artifacts including the plug-in to the local Ivy repository, run:
sbt publishLocal
The plug-in can now be used by creating a new SBT project on the same machine that also hosts the web service and including the following line in the project/plugins.sbt
file:
addSbtPlugin("org.scala-search" % "scaps-sbt" % <scapsVersion>)
Additionally, the libraries to index have to be included in the project's build.sbt
file as a library dependency. For example, to index scalaz, add
libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.1"
The Scala Standard Library is a library dependency per default and does not need to be added in order to be indexed.
If the Scaps control API is not exposed at the default ports, the correct hostname can bet set by using
scapsControlHost in Scaps := "localhost:9000"
to set the location of the Control API.
Finally, an index job can be started by running
sbt scaps:run
An example project, that demonstrates the required project structure is also given in the demoEnvironment
directory.
The simplest way to start an instance of the Scaps web service is by using SBT:
sbt 'webservice/run'
This will bind the User API and the Control API to the interfaces and ports as configured in webservice/src/main/resources/application.conf
. By default, the User API (including the Web UI) is bound to all interfaces on the port 8080
and the Control API is bound to the localhost
interface on the port 8081
.
For executing the Service in a productive deployment, using SBT is not advised. Instead, the service should be packaged in a standalone, executable jar (see http://www.scala-sbt.org/sbt-native-packager/):
sbt 'webservice/debian:packageBin'
An example configuration for a productive deployment is given in webservice/src/main/resources/application-prod.conf
.