Hi all,

Have you, guys, considered building ESME with Simple Build Tool:
http://code.google.com/p/simple-build-tool/ , at least locally?

SBT has several pros and cons.

Pros:

- Native Scala support -> no Scala plugin
- There is no need to recompile all project files, only changed ones -> more
faster build&run
- Buildfile is written in Scala instead of verbose XML -> buildfile is
shorter

Cons:

- SBT is based on Apache Ivy (while it includes Maven repo by default and
can access local Maven repo)
- I have no idea whether integration of SBT with VCS and CI tools is
possible

Probably many more cons exist

I managed to build, run tests and run ESME app on jetty with SBT (of course
I was able to perform only minimal testing). As an example, here is my SBT
project file below:

import sbt._

class EsmeProject(info: ProjectInfo) extends DefaultWebProject(info) {
  val liftVersion = "2.2-RC4"
  val compassVersion = "2.1.1"
  val luceneVersion = "2.4.0"

  val mavenLocal = "Local Maven Repository" at
"file://"+Path.userHome+"/.m2/repository"

  val scalatoolsSnapshot = ScalaToolsSnapshots
  val compassRepo = "Compass Repository" at "http://repo.compass-project.org
"
  val twitterRepo = "Twitter Repository" at "http://maven.twttr.com";

  def extraResources = "LICENSE" +++ "NOTICE"
  override def mainResources = super.mainResources +++ extraResources

  override def ivyXML =
    <dependencies>
      <dependency org="net.lag" name="configgy" rev="2.0.1">
        <exclude org="org.scala-tools" module="vscaladoc"/>
      </dependency>
      <dependency org="com.twitter" name="ostrich" rev="2.3.2">
        <exclude org="org.scala-tools" module="vscaladoc"/>
      </dependency>
    </dependencies>

  override def libraryDependencies = Set(
    "net.liftweb" %% "lift-util" % liftVersion % "compile->default",
    "net.liftweb" %% "lift-webkit" % liftVersion % "compile->default",
    "net.liftweb" %% "lift-widgets" % liftVersion % "compile->default",
    "net.liftweb" %% "lift-mapper" % liftVersion % "compile->default",
    "net.liftweb" %% "lift-testkit" % liftVersion % "compile->default",
    "net.liftweb" %% "lift-openid" % liftVersion % "compile->default",
    "net.liftweb" %% "lift-actor" % liftVersion % "compile->default",
    "net.liftweb" %% "lift-json" % liftVersion % "compile->default",
    "net.liftweb" %% "lift-common" % liftVersion % "compile->default",
    "org.compass-project" % "compass" % compassVersion % "compile->default",
    "org.apache.lucene" % "lucene-core" % luceneVersion %
"compile->default",
    "org.apache.lucene" % "lucene-snowball" % luceneVersion %
"compile->default",
    "commons-httpclient" % "commons-httpclient" % "3.1" %
"compile->default",
    "org.apache.derby" % "derby" % "10.5.3.0_1" % "compile->default",
    "org.mortbay.jetty" % "jetty" % "[6.1.6,)" % "test->default",
    "junit" % "junit" % "3.8.1" % "test->default",
    "junit" % "junit" % "4.4" % "test->default",
    "log4j" % "log4j" % "1.2.16" % "compile->default",
    "org.slf4j" % "slf4j-api" % "1.6.1" % "compile->default",
    "org.slf4j" % "slf4j-log4j12" % "1.6.1" % "compile->default",
    "org.scala-tools.testing" %% "specs" % "1.6.6" % "test->default"
  ) ++ super.libraryDependencies
}


Of course I didn't add many infrastructural tags comparing with Maven pom.

I thought that this might be interesting for someone or may be somebody
would wish to share any ideas, make any suggestions, comments etc. Otherwise
please consider it as a spam.

-- 
Best Regards,
Vladimir Ivanov

Reply via email to