-
Notifications
You must be signed in to change notification settings - Fork 275
/
Build.scala
197 lines (165 loc) · 6.15 KB
/
Build.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
/*
* Copyright 2012 WorldWide Conferencing, LLC
*
* 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 java.util.{Calendar => Cal}
import sbt._
import Keys._
import net.liftweb.sbt._
import Dependencies._
object BuildDef extends Build {
lazy val liftProjects = core ++ web ++ persistence
lazy val framework =
liftProject("lift-framework", file("."))
.aggregate(liftProjects: _*)
.settings(publishArtifact := false)
// Core Projects
// -------------
lazy val core: Seq[ProjectReference] =
Seq(common, actor, json, json_scalaz, json_ext, util)
lazy val common =
coreProject("common")
.settings(
description := "Common Libraties and Utilities",
libraryDependencies ++= Seq(slf4j_api, logback, slf4j_log4j12, commons_codec))
lazy val actor =
coreProject("actor")
.dependsOn(common)
.settings(
description := "Simple Actor")
lazy val json =
coreProject("json")
.settings(
description := "JSON Library",
libraryDependencies <++= scalaVersion { sv => Seq(scalap(sv), paranamer) })
lazy val json_scalaz =
coreProject("json-scalaz")
.dependsOn(json)
.settings(
description := "JSON Library based on Scalaz",
libraryDependencies <+= scalaVersion(scalaz))
lazy val json_ext =
coreProject("json-ext")
.dependsOn(common, json)
.settings(
description := "Extentions to JSON Library",
libraryDependencies ++= Seq(commons_codec, joda_time))
lazy val util =
coreProject("util")
.dependsOn(actor, json)
.settings(
description := "Utilities Library",
parallelExecution in Test := false,
libraryDependencies ++= Seq(joda_time, commons_codec, javamail, log4j, htmlparser))
// Web Projects
// ------------
lazy val web: Seq[ProjectReference] =
Seq(testkit, webkit, wizard)
lazy val testkit =
webProject("testkit")
.dependsOn(util)
.settings(
description := "Testkit for Webkit Library",
libraryDependencies ++= Seq(commons_httpclient, servlet_api))
lazy val webkit =
webProject("webkit")
.dependsOn(util, testkit % "provided")
.settings(
description := "Webkit Library",
packageOptions in packageBin += Package.ManifestAttributes("Build-Time" -> Cal.getInstance.getTimeInMillis.toString),
parallelExecution in Test := false,
libraryDependencies <++= scalaVersion { sv =>
Seq(commons_fileupload, servlet_api, specs(sv).copy(configurations = Some("provided")), jetty6, jwebunit)
},
initialize in Test <<= (sourceDirectory in Test) { src =>
System.setProperty("net.liftweb.webapptest.src.test.webapp", (src / "webapp").absString)
})
lazy val wizard =
webProject("wizard")
.dependsOn(webkit, db)
.settings(
description := "Wizard Library")
// Persistence Projects
// --------------------
lazy val persistence: Seq[ProjectReference] =
Seq(db, proto, jpa, mapper, record, couchdb, squeryl_record, mongodb, mongodb_record, ldap)
lazy val db =
persistenceProject("db")
.dependsOn(util)
lazy val proto =
persistenceProject("proto")
.dependsOn(webkit)
lazy val jpa =
persistenceProject("jpa")
.dependsOn(webkit)
.settings(libraryDependencies ++= Seq(scalajpa, persistence_api))
lazy val mapper =
persistenceProject("mapper")
.dependsOn(db, proto)
.settings(
description := "Mapper Library",
parallelExecution in Test := false,
libraryDependencies ++= Seq(h2, derby),
initialize in Test <<= (crossTarget in Test) { ct =>
System.setProperty("derby.stream.error.file", (ct / "derby.log").absolutePath)
})
lazy val record =
persistenceProject("record")
.dependsOn(proto, db)
lazy val couchdb =
persistenceProject("couchdb")
.dependsOn(record)
.settings(
libraryDependencies += dispatch_http)
lazy val squeryl_record =
persistenceProject("squeryl-record")
.dependsOn(record, db)
.settings(libraryDependencies ++= Seq(h2, squeryl))
lazy val mongodb =
persistenceProject("mongodb")
.dependsOn(json_ext)
.settings(
parallelExecution in Test := false,
libraryDependencies += mongo_driver)
lazy val mongodb_record =
persistenceProject("mongodb-record")
.dependsOn(record, mongodb)
.settings(parallelExecution in Test := false)
lazy val ldap =
persistenceProject("ldap")
.dependsOn(mapper)
.settings(
libraryDependencies += apacheds,
initialize in Test <<= (crossTarget in Test) { ct =>
System.setProperty("apacheds.working.dir", (ct / "apacheds").absolutePath)
})
def coreProject = liftProject("core") _
def webProject = liftProject("web") _
def persistenceProject = liftProject("persistence") _
/** Project definition helper that simplifies creation of `ProjectReference`.
*
* It is a convenience method to create a Lift `ProjectReference` module by having the boilerplate for most common
* activities tucked in.
*
* @param base the base path location of project module.
* @param prefix the prefix of project module.
* @param module the name of the project module. Typically, a project id is of the form lift-`module`.
*/
def liftProject(base: String, prefix: String = "lift-")(module: String): Project =
liftProject(
id = if(module.startsWith(prefix)) module else prefix + module,
base = file(base) / module.stripPrefix(prefix))
def liftProject(id: String, base: File): Project =
Project(id, base).settings(LiftBuildPlugin.liftBuildSettings: _*)
}