[英]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回購中,則可以:
test
前運行mvn dependency:go-offline
運行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.