如何依赖从同行Maven项目生成的jar?

时间:2014-06-11 20:12:14

标签: java maven sbt

我有一个SBT项目(带有附带的build.scala文件),它依赖于由另一个单独的Maven项目构建的JAR。这个JAR预计将出现在" lib"目录作为非托管资源。

我是否希望SBT知道这个JAR应该在哪里(在Maven项目的目标目录中)并在构建之前复制它?

或者我是否希望我的Maven项目知道应该将JAR复制到哪里(SBT项目的lib目录)并在成功构建时复制它?

或者我是否想告诉maven项目对本地存储库执行某些操作并让SBT项目引用它?

我的猜测是第三种选择是我想要做的。如果是这样,有人会非常友好以确保我理解这些步骤吗?具体来说,我不确定如何在我的pom.xml中正确添加正确的咒语以将JAR发布到本地存储库以及如何引用build.scala文件中的本地存储库。

我应该注意,使用远程存储库不是一个选项,因为该项目必须能够在本地开发盒以及我们的Jenkins构建服务器上构建。如果我们将JAR推送到远程存储库,则每个人都将被迫使用它,并且开发版本将与签入版本冲突。因此,使用本地存储库或只是将JAR复制到lib目录中是可行的方法。这让开发人员可以随时待命,直到他们开心,当他们办理登机手续时,Jenkins服务器会选择签到并自行完成,而不受每个人(通常是凌乱的)开发环境状态的影响。

我只需要弄清楚在构建时自动执行此操作的正确方法,以便开发人员不必在每次更改时都复制该文件。

1 个答案:

答案 0 :(得分:0)

您应该将maven管理的项目安装到本地maven存储库,并在sbt中的resolvers中引用存储库。

mvn install

然后将以下内容添加到build.sbt

resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"

请参阅sbt。

的官方文档中的Library dependencies