2017-01-04 4 views
0

私はこれを長い間苦労しているので、どんな助けにも感謝します。
共通ライブラリmyCommonLibは、私がsbt-assemblyで陰影を付ける必要がある依存関係があります。
ローカルIvyリポジトリに公開すると、通常の「通常の」バージョンと、「-assembly」が追加された影付きのバージョン(すべての依存関係がバンドルされている)の2つのバージョンが取得されます。Sbtアセンブリ、Ivy、クラスパス

問題は、私が「通常の」依存関係を使用しているときに、陰影付きバージョンを参照するNoClassDefFoundErrorを取得します。

私はこのようなクラスパスから完全に削除しようとした:

dependencyClasspath in Runtime := { 
    val allFiles: Seq[Attributed[File]] = (dependencyClasspath in Runtime).value 
    allFiles.filterNot(_.data.getName.toLowerCase.contains("-assembly")) 
} 

それはまだ、同じエラーが動作しません。

<artifact name="myCommonLib_2.11" type="jar" ext="jar" conf="compile,runtime,test,provided,optional,sources,docs,pom" e:classifier="assembly"/> 

私は何をしないのです:

しかし、ときに私はそれが仕事がないアイビーXMLからそれを(コメントアウト)削除しますか?

答えて

0

私はそれを動作させることができた、今のを...
それはそうです

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)  
) 
0

あなたがここに必要な書類この

libraryDependencies ++= Seq(
    "some" % "myCommonLib" % "1.0" excludeAll(
     ExclusionRule(organization = "yourOrganisation", name = "dependency name"), 
     ... 
) 

を行うことによって、SBTビルドでそれを除外することができます:http://www.scala-sbt.org/0.12.2/api/sbt/ExclusionRule.html

+0

おかげで、しかしhttp://www.scala-sbt.org/0.13/docs/Library-Management.html#E [SBTドキュメント](:私はこのように、正確なアーティファクトを指定するときに動作するようにxclude + Transitive + Dependencies)は、「依存関係の特定の推移的依存性**を除外するには、excludeAllまたはexcludeメソッドを使用します」と言います。これは過渡的な依存性ではなく、モジュール自体の一部です。(その中の別のアーティファクト) –

関連する問題