【问题标题】:Add local dependency jar in SBT-Scalatra project在 SBT-Scalatra 项目中添加本地依赖 jar
【发布时间】:2013-12-20 09:14:40
【问题描述】:

我正在开发一个示例 scalatra webapp。我又创建了一个包含 dao 和服务层的服务 jar。我想在 Scalatra-SBT 项目中添加这个依赖项。我怎样才能做到这一点?

我使用命令捆绑了我的服务 jar:SBT 包,它创建了一个 jar。我将如何在 Web 应用程序中包含这个 jar?我可以在 build.scala 文件中添加它吗?或者我可以复制到任何 Webapp 文件夹中吗?

是否可以将此 jar 推送到本地存储库并在我的 webapp 构建时从那里提取它?

【问题讨论】:

    标签: scala sbt scalatra


    【解决方案1】:

    哇!这里有很多问题!

    好消息是 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

    只要设置了namescalaVersion 变量,您无需在build.sbt 中执行任何特殊操作即可完成这项工作。请注意,这将发布到您本地的 Ivy 缓存,对于大多数人来说是 $HOME/.ivy2/local

    让您的 Scalatra-SBT webapp 获取您的服务 jar:

    编辑你的 webapp 的 project/build.scala,在 libraryDependencies 键下添加这个依赖项(应该已经有一些依赖项,每行一个,把你的放在中间的某个地方!):

    "services" %% "services" % "0.1-SNAPSHOT",

    执行sbt clean update,您的依赖项将被拉入。如果它不起作用,SBT 将为您提供它查找工件的位置列表;将其与它们发布到的位置(在上一步中)进行仔细比较,您可能会发现一个错字;修复它,然后重试。

    请注意,依赖和发布管理比我上面展示的要多很多,但这应该足以让你继续前进。

    【讨论】:

    • 我在阅读 sbt 文档后得到了这个解决方案。我和你回答的一样。不管怎样,谢谢你的回答
    • @rajeevprasanna 你介意链接那个文档页面吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2013-05-28
    • 2011-01-25
    • 2012-01-01
    • 2012-07-28
    • 2017-05-20
    相关资源
    最近更新 更多