sbt version 0.13.13
项目/ plugins.sbt:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.4")
build.sbt:
libraryDependencies ++= Seq(
"oracle" % "oracle-jdbc" % "11.2.0.4.0"
)
当我运行sbt assembly
时,它包含胖jar 中的所有其他依赖项,除了 oracle!我错过了什么?
答案 0 :(得分:0)
这个问题非常模糊,但无论如何我都会讲述这个故事。
原来oracle jar在我们的nexus中被破坏了(看起来它在它的开头就有了http标题,好像有人使用了curl -v
并将输出传输到文件作为下载jar的一种方式...)
有些工具比其他工具更能容忍这个事实,而这些工具掩盖了这个问题。 Intellij对它很好。 JVM很好用。但是sbt-assembly
默默地忽略了这个问题,并且不包括类文件。只有sbt-native-packager
会为您提供方便的警告,提供问题的线索:
warning [/tmp/app/my-app-1.0-SNAPSHOT/lib/oracle.oracle-jdbc-11.2.0.4.0.jar]: 170 extra bytes at beginning or within zipfile
(attempting to process anyway)
我可以责怪队友上传一个损坏的jar而没有校验和文件到我们的关系,但最终我责怪Oracle的许可政策迫使你自己托管他们的罐子,其次我责怪Sonatype释放残缺的Nexus V3它没有用于上传工件的UI,这会诱使人们编写脚本,并像使用curl -v
一样犯错误。咆哮。