繁体   English   中英

在不同的Java Maven项目中使用sbt构建的Scala项目的传递依赖

[英]transitive dependencies of scala project built with sbt within a different java maven project

我在Java Maven项目中包含了一个用sbt构建的scala库。 这个罐子是使用sbt publishM2 我可以在库中很好地使用scala类,但是maven不会将这些类的可传递依赖项添加到类路径中。 例如,其中一个scala类使用joda-time,这在其build.sbt文件中指定如下:

libraryDependencies += "joda-time" % "joda-time" % "2.0"

但是,当从Java项目运行带有mvn test ,却得到了一个类未找到的异常:

java.lang.NoClassDefFoundError: org/joda/time/DateTime 

当查看sbt构建的pom并将其放置在~/.m2/...子目录中时,我可以找到以下关于joda-time的条目:

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.0</version>
    </dependency>

我的理解是,maven应该解决这些传递性依赖关系,并将其添加到当前项目的类路径中。 我想念什么?

从逻辑publishM2 ,当您发布M2时,SBT会将您的库发布到m2缓存中,但不会传递其传递依赖项。 如果您想将所有内容放入M2回购中,则可以:

运行mvn -X dependency:tree ,maven说sbt生成的pom.xml的groupId中存在错误。

问题出在我的build.sbt文件中,其中包含斜杠,显示了organization的价值。 这是作为pom.xml中的groupId包含的。 用点替换斜杠并重新运行sbt publishM2此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM