我正在研究scalatra webapp示例。我创建了一个包含dao和服务层的服务jar。我想在Scalatra-SBT项目中添加此依赖项。我怎样才能做到这一点?
我使用命令捆绑了我的服务jar: SBT包,它创建了一个jar。我将如何在Web应用程序中包含此jar?我可以在build.scala文件中添加它吗?或者我可以复制到任何Webapp文件夹吗?
是否可以将此jar推送到本地存储库并在我的webapp构建时将其从那里拉出来?
答案 0 :(得分:10)
呼!这里有很多问题!
好消息是SBT可以完成您要求的所有任务。
不要复制JAR文件以满足依赖关系!它最终会流泪,几乎可以保证。像Ivy和Maven(以及扩展,SBT)这样的工具可以提供帮助。
将服务jar推送到本地仓库:
SBT任务是publish-local
,即来自服务jar根目录的sbt publish-local
。
您将看到许多描述性输出,最后使用以下格式的行:
[info] published services_2.10 to /Users/millhouse/.ivy2/local/services/services_2.10/0.1-SNAPSHOT/jars/services_2.10.jar
只要您设置了build.sbt
和name
变量,就不需要在scalaVersion
中执行任何特殊操作即可完成此工作。请注意,这将发布到您当地的常春藤缓存,对于大多数人来说都是$HOME/.ivy2/local
。
让您的Scalatra-SBT网络应用程序获取您的服务jar:
编辑你的webapp project/build.scala
,在libraryDependencies
键下添加这个依赖项(应该已经存在一些依赖项,每行一个,将你的位置放在中间位置!):
"services" %% "services" % "0.1-SNAPSHOT",
执行sbt clean update
并且您的依赖项将被拉入。如果它不起作用,SBT将为您提供其查找工件的位置列表;将它与它们发布的位置(在上一步中)密切比较,你可能会发现一个错字;修复它并再试一次。
请注意,依赖关系和发布管理方面的很多比上面显示的更多,但这应该足以让你前进。