如何将本地Maven项目作为模块添加到sbt / Play项目?

时间:2018-12-13 16:20:11

标签: maven intellij-idea sbt

我有一个Maven项目(“ example-square”),该项目提供用于计算整数的平方和立方的类。 我还有一个sbt / Play框架项目(“ sbt_hello”),该项目使用“ example-square”中的square和cube类。我想在我的“ example-square”项目中添加许多新类(例如添加平方根类)。

为使所有功能协同工作,我将Maven项目作为库依赖项包含在build.sbt中,但我也将其添加为IntelliJ中的模块(使用File > Project Structure > Modules > sbt_hello > Dependencies > Add Module Dependency...)。 运行使用square和cube类的测试类是完全成功的。代码中的所有更改都会立即反映到测试中。

但是,当我刷新我的sbt项目或尝试运行Play项目时,我收到错误消息,提示存在未解决的依赖路径。

我想在IntelliJ中将其添加为模块可以使测试成功运行,并将其添加到库依赖项是sbt查找jar的原因(我确实要这样做?),这只是看错了的地方。根据错误日志,sbt只查看以下文件夹:

[warn]  module not found: example#example-square;1.0-SNAPSHOT
[warn] ==== local: tried
[warn]   C:\Users\just_me\.ivy2\local\example\example-square\1.0-SNAPSHOT\ivys\ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/example/example-square/1.0-SNAPSHOT/example-square-1.0-SNAPSHOT.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   C:\Users\just_me\.sbt\preloaded\example\example-square\1.0-SNAPSHOT\ivys\ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:/C:/Users/just_me/.sbt/preloaded/example/example-square/1.0-SNAPSHOT/example-square-1.0-SNAPSHOT.pom

当然不存在该软件包,因为它是一个Maven项目,并且我没有运行mvn install(即使我这样做,这些jar也会被安装到.m2中)。

我之前曾尝试通过File > Project Structure > Modules > sbt_hello > Sources > Add Content Root添加模块,如here所述,但是IntelliJ在更新sbt项目时会不断删除此模块。

问:使用IntelliJ时,如何正确地从sbt / Play项目中指向实际的Maven项目?

顺便说一句,我对sbt / Play和Scala完全陌生(尽管我以前使用过Java)。

1 个答案:

答案 0 :(得分:1)

  1. 添加到您的build.sbt中: resolvers += Resolver.mavenLocal
  2. 通过mvn install项目安装到本地Maven存储库($ USER / .m2)。
  3. 向您的build.sbt文件添加依赖项。

第二种方法是使用人工制品发布本地项目。