如何从第二个项目中添加依赖于Eclipse中的Play框架项目?

时间:2013-08-01 06:35:40

标签: eclipse scala build playframework-2.0 sbt

我是Java / Scala / Play / Eclipse的新手。到目前为止,我的经验主要是使用C#和Visual Studio。

我想知道如何在Eclipse中将Scala项目中的依赖项添加到我的Play项目中。在Visual Studio中,这是创建类库项目并将其添加为另一个项目的引用的问题。 IDE管理了构建过程。

我尝试在Build.scala文件中添加一个新项目:

import sbt._
import Keys._
import play.Project._

object ApplicationBuild extends Build {

  val appName         = "blogUI"
  val appVersion      = "1.0-SNAPSHOT"

  val appDependencies = Seq(
    // Add your project dependencies here,
    jdbc,
    anorm
  )

  //  The new project; everything else was boilerplate
  val blogPlatform = Project("blogPlatform", file("blogPlatform")).settings(
    scalaVersion := "2.10.2"
  )

  val main = play.Project(appName, appVersion, appDependencies).settings(
    // Add your own project settings here      
  )

}

这不起作用 - 它最终在我的blogUI Play项目中创建一个空的blogPlatform目录,而不是引用我现有的blogPlatform项目。我也不熟悉sbt,所以我可能会完全滥用这个工具。

我还尝试通过Eclipse添加blogPlatform项目作为依赖项,这是有效的 - 直到我从终端运行“play eclipse”。这消除了我在IDE中所做的任何更改。

理想情况下,我想要一种方法将blogPlatform添加为blogUI项目的依赖项,以便Eclipse和Play尊重它,并且在重建blogUI时重建blogPlatform。因此,仅将预编译的jar文件添加到Play项目中的lib目录是不够的(我遇到的另一种方法,但我没有尝试过)。

非常感谢任何有关工具或资源的建议或指示!

1 个答案:

答案 0 :(得分:1)

如果你的两个项目紧密耦合,那么多项目构建可能最有意义。我发现这个blog post from fortytwo在本地设置多项目构建时非常有用。运行play eclipse时,您应该自动获得具有正确依赖关系的多个Eclipse项目文件。

如果您的项目不相关,外部化依赖项可能更有意义。从第一个项目开始,您可以运行play publish-local将jar文件部署到本地Ivy存储库; sbt docs解释了如何配置发布到中央存储库。在第二个项目中,您可以添加指向此工件的"groupId" % "artifactId" % "1.0-SNAPSHOT"依赖项。遗憾的是Eclipse并没有很好地使用这种配置,你必须在导入这两个项目后手动将jarfile依赖项替换为项目依赖项。