Sbt-assembly, Ivy, 类路径
Sbt-assembly, Ivy, classpath
我为此苦苦挣扎了很长时间,如有任何帮助,我们将不胜感激。
我有一个公共库 myCommonLib
,它有一个我需要用 sbt-assembly
.
遮蔽的依赖项
当我将它发布到本地 Ivy 存储库时,我得到了 2 个版本,一个 "normal" 一个(像往常一样)和一个阴影版本(捆绑了所有依赖项),当然还附加了“-assembly”。
问题是当我使用我的 "normal" 依赖项时,我得到 NoClassDefFoundError
指的是阴影版本!!!
我试过像这样从类路径中完全删除它:
dependencyClasspath in Runtime := {
val allFiles: Seq[Attributed[File]] = (dependencyClasspath in Runtime).value
allFiles.filterNot(_.data.getName.toLowerCase.contains("-assembly"))
}
但是不行,还是一样的错误
但是,当我从 Ivy 中删除它(注释掉)时 XML 它确实有效:
<artifact name="myCommonLib_2.11" type="jar" ext="jar" conf="compile,runtime,test,provided,optional,sources,docs,pom" e:classifier="assembly"/>
我错过了什么?
你可以通过这样做在你的构建 sbt 中排除它
libraryDependencies ++= Seq(
"some" % "myCommonLib" % "1.0" excludeAll(
ExclusionRule(organization = "yourOrganisation", name = "dependency name"),
...
)
这里是必要的文档:http://www.scala-sbt.org/0.12.2/api/sbt/ExclusionRule.html
我已经设法让它工作了,现在...
当我指定确切的工件时,它似乎有效,如下所示:
val myCommonLibArtifact = Artifact(
name="myCommonLib", `type`="jar", extension="jar", classifier=None,
configurations=Seq(Compile), url=None, extraAttributes=Map())
libraryDependencies ++= Seq(
"ba.sake" %% "myCommonLib" % "0.0.1" artifacts (myCommonLibArtifact)
)
我为此苦苦挣扎了很长时间,如有任何帮助,我们将不胜感激。
我有一个公共库 myCommonLib
,它有一个我需要用 sbt-assembly
.
遮蔽的依赖项
当我将它发布到本地 Ivy 存储库时,我得到了 2 个版本,一个 "normal" 一个(像往常一样)和一个阴影版本(捆绑了所有依赖项),当然还附加了“-assembly”。
问题是当我使用我的 "normal" 依赖项时,我得到 NoClassDefFoundError
指的是阴影版本!!!
我试过像这样从类路径中完全删除它:
dependencyClasspath in Runtime := {
val allFiles: Seq[Attributed[File]] = (dependencyClasspath in Runtime).value
allFiles.filterNot(_.data.getName.toLowerCase.contains("-assembly"))
}
但是不行,还是一样的错误
但是,当我从 Ivy 中删除它(注释掉)时 XML 它确实有效:
<artifact name="myCommonLib_2.11" type="jar" ext="jar" conf="compile,runtime,test,provided,optional,sources,docs,pom" e:classifier="assembly"/>
我错过了什么?
你可以通过这样做在你的构建 sbt 中排除它
libraryDependencies ++= Seq(
"some" % "myCommonLib" % "1.0" excludeAll(
ExclusionRule(organization = "yourOrganisation", name = "dependency name"),
...
)
这里是必要的文档:http://www.scala-sbt.org/0.12.2/api/sbt/ExclusionRule.html
我已经设法让它工作了,现在...
当我指定确切的工件时,它似乎有效,如下所示:
val myCommonLibArtifact = Artifact(
name="myCommonLib", `type`="jar", extension="jar", classifier=None,
configurations=Seq(Compile), url=None, extraAttributes=Map())
libraryDependencies ++= Seq(
"ba.sake" %% "myCommonLib" % "0.0.1" artifacts (myCommonLibArtifact)
)