簡體   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