blob: d39dc89e5c56a2ae43b7042d895d74a26cf9826e [file] [log] [blame]
// Copyright 2015 TappingStone, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import SonatypeKeys._
import UnidocKeys._
name := "pio"
version in ThisBuild := "0.9.4"
organization in ThisBuild := "io.prediction"
scalaVersion in ThisBuild := "2.10.5"
scalacOptions in ThisBuild ++= Seq("-deprecation", "-unchecked", "-feature")
scalacOptions in (ThisBuild, Test) ++= Seq("-Yrangepos")
fork in (ThisBuild, run) := true
javacOptions in (ThisBuild, compile) ++= Seq("-source", "1.7", "-target", "1.7",
"-Xlint:deprecation", "-Xlint:unchecked")
elasticsearchVersion in ThisBuild := "1.4.4"
json4sVersion in ThisBuild := "3.2.10"
sparkVersion in ThisBuild := "1.3.0"
lazy val pioBuildInfoSettings = buildInfoSettings ++ Seq(
sourceGenerators in Compile <+= buildInfo,
buildInfoKeys := Seq[BuildInfoKey](
name,
version,
scalaVersion,
sbtVersion,
sparkVersion),
buildInfoPackage := "io.prediction.core")
lazy val conf = file(".") / "conf"
lazy val root = project in file(".") aggregate(
common,
core,
data,
tools,
e2)
lazy val common = (project in file("common")).
settings(sonatypeSettings: _*).
settings(unmanagedClasspath in Test += conf)
lazy val core = (project in file("core")).
dependsOn(data).
settings(genjavadocSettings: _*).
settings(pioBuildInfoSettings: _*).
settings(sonatypeSettings: _*).
enablePlugins(SbtTwirl).
settings(unmanagedClasspath in Test += conf)
lazy val data = (project in file("data")).
dependsOn(common).
settings(genjavadocSettings: _*).
settings(sonatypeSettings: _*).
settings(unmanagedClasspath in Test += conf)
lazy val tools = (project in file("tools")).
dependsOn(core).
dependsOn(data).
enablePlugins(SbtTwirl).
settings(unmanagedClasspath in Test += conf)
lazy val e2 = (project in file("e2")).
settings(genjavadocSettings: _*).
settings(sonatypeSettings: _*).
settings(unmanagedClasspath in Test += conf)
scalaJavaUnidocSettings
// scalaUnidocSettings
unidocAllSources in (JavaUnidoc, unidoc) := {
(unidocAllSources in (JavaUnidoc, unidoc)).value
.map(_.filterNot(_.getName.contains("$")))
}
scalacOptions in (ScalaUnidoc, unidoc) ++= Seq(
"-groups",
"-skip-packages",
Seq(
"akka",
"breeze",
"html",
"io.prediction.annotation",
"io.prediction.controller.html",
"io.prediction.data.api",
"io.prediction.data.view",
"io.prediction.workflow",
"io.prediction.tools",
"org",
"scalikejdbc").mkString(":"),
"-doc-title",
"PredictionIO Scala API",
"-doc-version",
version.value,
"-doc-root-content",
"docs/scaladoc/rootdoc.txt")
javacOptions in (JavaUnidoc, unidoc) := Seq(
"-subpackages",
"io.prediction",
"-exclude",
Seq(
"io.prediction.controller.html",
"io.prediction.data.api",
"io.prediction.data.view",
"io.prediction.data.webhooks.*",
"io.prediction.workflow",
"io.prediction.tools",
"org.apache.hadoop").mkString(":"),
"-windowtitle",
"PredictionIO Javadoc " + version.value,
"-group",
"Java Controllers",
Seq(
"io.prediction.controller.java",
"io.prediction.data.store.java").mkString(":"),
"-group",
"Scala Base Classes",
Seq(
"io.prediction.controller",
"io.prediction.core",
"io.prediction.data.storage",
"io.prediction.data.storage.*",
"io.prediction.data.store").mkString(":"),
"-overview",
"docs/javadoc/javadoc-overview.html",
"-noqualifier",
"java.lang")
lazy val pioUnidoc = taskKey[Unit]("Builds PredictionIO ScalaDoc and Javadoc")
pioUnidoc := {
(unidoc in Compile).value
val log = streams.value.log
log.info("Adding custom styling.")
IO.append(
crossTarget.value / "unidoc" / "lib" / "template.css",
IO.read(baseDirectory.value / "docs" / "scaladoc" / "api-docs.css"))
IO.append(
crossTarget.value / "unidoc" / "lib" / "template.js",
IO.read(baseDirectory.value / "docs" / "scaladoc" / "api-docs.js"))
}
pomExtra in ThisBuild := {
<url>http://prediction.io</url>
<licenses>
<license>
<name>Apache 2</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<scm>
<connection>scm:git:github.com/PredictionIO/PredictionIO</connection>
<developerConnection>scm:git:git@github.com:PredictionIO/PredictionIO.git</developerConnection>
<url>github.com/PredictionIO/PredictionIO</url>
</scm>
<developers>
<developer>
<id>pio</id>
<name>The PredictionIO Team</name>
<url>http://prediction.io</url>
</developer>
</developers>
}