【问题标题】:Scala jar in Maven project: Failure to find org.mongodb:casbah_2.12:jar:3.1.1Maven项目中的Scala jar:找不到org.mongodb:casbah_2.12:jar:3.1.1
【发布时间】:2017-04-09 18:07:07
【问题描述】:

Scala 和 sbt 新手在这里。我创建了一个使用 casbah 的 Scala sbt 项目

libraryDependencies += "org.mongodb" %% "casbah" % "3.1.1"

查询 mongodb 并将结果作为地图返回。我想在我的 Java maven 项目中使用此代码来操作我从查询数据库中获得的结果。

我将此添加到我的 build.sbt 文件中:

publishMavenStyle := true

publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath + "/.m2/repository")))

在我的 .m2 本地存储库中安装 jar 文件。这是我做sbt publish时的输出:

> publish
[info] Packaging /Users/miguelvelez/Documents/Programming/Scala/Projects/mongo/target/scala-2.12/mongo_2.12-0.1.0-SNAPSHOT-sources.jar ...
[info] Done packaging.
[info] Main Scala API documentation to /Users/miguelvelez/Documents/Programming/Scala/Projects/mongo/target/scala-2.12/api...
[info] Packaging /Users/miguelvelez/Documents/Programming/Scala/Projects/mongo/target/scala-2.12/mongo_2.12-0.1.0-SNAPSHOT.jar ...
[info] Done packaging.
[info] Wrote /Users/miguelvelez/Documents/Programming/Scala/Projects/mongo/target/scala-2.12/mongo_2.12-0.1.0-SNAPSHOT.pom
[info] :: delivering :: edu.cmu.cs.mvelezce#mongo_2.12;0.1.0-SNAPSHOT :: 0.1.0-SNAPSHOT :: integration :: Sun Apr 09 13:58:46 EDT 2017
[info]  delivering ivy file to /Users/miguelvelez/Documents/Programming/Scala/Projects/mongo/target/scala-2.12/ivy-0.1.0-SNAPSHOT.xml
model contains 9 documentable templates
[info] Main Scala API documentation successful.
[info] Packaging /Users/miguelvelez/Documents/Programming/Scala/Projects/mongo/target/scala-2.12/mongo_2.12-0.1.0-SNAPSHOT-javadoc.jar ...
[info] Done packaging.
[info]  published mongo_2.12 to /Users/miguelvelez/.m2/repository/edu/cmu/cs/mvelezce/mongo_2.12/0.1.0-SNAPSHOT/mongo_2.12-0.1.0-SNAPSHOT.pom
[info]  published mongo_2.12 to /Users/miguelvelez/.m2/repository/edu/cmu/cs/mvelezce/mongo_2.12/0.1.0-SNAPSHOT/mongo_2.12-0.1.0-SNAPSHOT.jar
[info]  published mongo_2.12 to /Users/miguelvelez/.m2/repository/edu/cmu/cs/mvelezce/mongo_2.12/0.1.0-SNAPSHOT/mongo_2.12-0.1.0-SNAPSHOT-sources.jar
[info]  published mongo_2.12 to /Users/miguelvelez/.m2/repository/edu/cmu/cs/mvelezce/mongo_2.12/0.1.0-SNAPSHOT/mongo_2.12-0.1.0-SNAPSHOT-javadoc.jar
[success] Total time: 3 s, completed Apr 9, 2017 1:58:49 PM

然后我在我的 pom 文件中导入了这个依赖项:

<dependency>
    <groupId>edu.cmu.cs.mvelezce</groupId>
    <artifactId>mongo_2.12</artifactId>
    <version>0.1.0-SNAPSHOT</version>
</dependency>

当我运行mvn compile 时,我收到以下错误:

[ERROR] Failed to execute goal on project performance-mapper: Could not resolve dependencies for project edu.cmu.cs.mvelezce:performance-mapper:jar:0.1.0-SNAPSHOT: Failure to find org.mongodb:casbah_2.12:jar:3.1.1 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]

我知道 casbah 有几个模块,我可以只导入几个而不是全部。但是,按照Casbah 中的文档,我添加了enterie 库。我还看了Maven Central,这个版本的casbah没有jar;只有独立的模块。我在我的 pom 中添加了其中一些模块,但我仍然遇到与上面相同的错误。 Maven 正在寻找完整的 jar 文件。

有没有办法解决这个问题?我以为我只能在 build.sbt 文件中添加我需要的 Scala 依赖项,但是当我这样做时出现编译错误。有人有建议吗?

谢谢!

【问题讨论】:

  • 您还需要在本地 pom 文件中包含 Casbah 作为依赖项。
  • 同样在你的本地 pom.xml 中设置依赖类型为pom
  • @Ross 这两个建议在java项目中,对吗?

标签: java mongodb scala maven sbt


【解决方案1】:

您需要确保项目中的 Casbah 依赖项的类型为 pom。例如在您的 pom.xml 中添加以下内容:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>casbah_2.11</artifactId>
    <version>3.1.1</version>
    <type>pom</type>
</dependency>

【讨论】:

  • 我收到了和以前一样的错误信息。我也用casbah_2.11 进行了尝试,得到了相同的结果。 Failure to find org.mongodb:casbah_2.12:jar:3.1.1 in https://repo.maven.apache.org/maven2
  • 如果您已将依赖项添加为 pom 类型,则它不应该在寻找 jar 文件。
猜你喜欢
  • 1970-01-01
  • 2016-01-13
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2014-04-07
  • 1970-01-01
相关资源
最近更新 更多