Scala& XSBT - 与项目类路径共享构建类路径的一部分

时间:2012-01-26 12:15:48

标签: scala sbt

首先,我对Scala,SBT和Vaadin都很陌生。

我正在尝试制作Scala&使用Timeline插件的Vaadin应用程序。我不得不在 build 项目(project/)下放置Timeline jar(非托管依赖)和Vaadin依赖,这样我就可以在构建期间编译它(好吧,通过调用 vaadin 任务)。如何在不重复jar和依赖项的情况下将vaadin-timeline-agpl-3.0-1.2.3.jar和Vaadin依赖项合并到vaadinTest项目中?以下是我的项目结构。谢谢。顺便说一下,我已经尝试过现有的Vaadin插件,但它们很糟糕(我需要做的就是编译widgetset)。

这是我的项目结构:

vaadinTest/
    project/
        lib/vaadin-timeline-agpl-3.0-1.2.3.jar
        build.sbt
        ProjectBuild.scala
    src/

vaadinTest/project/build.sbt:

libraryDependencies ++= Seq(
    "com.google.gwt" % "gwt-user" % "2.4.0",
    "com.google.gwt" % "gwt-dev" % "2.4.0",
    "com.vaadin" % "vaadin" % "6.7.4"
)

vaadinTest/project/ProjectBuild.scala:

import com.google.gwt.dev.Compiler
import sbt._
import Keys._

object ProjectBuild extends Build {
    val deps = Seq(
        "org.eclipse.jetty" % "jetty-server" % "8.1.0.RC5",
        "org.eclipse.jetty" % "jetty-webapp" % "8.1.0.RC5",
        "org.eclipse.jetty" % "jetty-servlet" % "8.1.0.RC5",
    )
    val vaadinTest = Project(
        "vaadinTest", file("."), Defaults.defaultSettings
            ++ Seq(libraryDependencies ++= deps)
            ++ Seq(vaadinTask)
    )

    val vaadin = TaskKey[Unit]("vaadin")
    val vaadinTask = vaadin := {
        Compiler.main(Array("-war", "src/main/webapp/VAADIN/widgetsets",
            "com.vaadin.addon.timeline.gwt.TimelineWidgetSet"))
    }
}

1 个答案:

答案 0 :(得分:0)

您的问题提到了一个“插件”项目,但我无法在您的项目结构或ProjectBuild.scala中看到该项目?

在任何情况下,您都可以通过修改dependencyClasspath设置将其他目录添加到类路径中。这是记录here(参见“非托管依赖关系”部分)。