2014-02-18 3 views
1

Я пытаюсь создать толстую банку с sbt и sbt-assembly plugin для моего проекта с помощью Scala и EclipseLink JPA, но команда сборки не удалась, потому что файл eclipse.inf будет найден дважды.Устранение зависимостей для eclipselink путем создания толстой банки с sbt и sbt-assembly?

> assembly 
[info] Including from cache: commonj.sdo-2.1.1.jar 
[info] Including from cache: javax.persistence-2.1.0.jar 
[info] Including from cache: scala-library.jar 
[info] Including from cache: eclipselink-2.5.1.jar 
[info] Run completed in 38 milliseconds. 
[info] Checking every *.class/*.jar file's SHA-1. 
[info] Merging files... 
[warn] Merging 'org\eclipse\persistence\descriptors\copying' with strategy 'rename' 
[warn] Merging 'META-INF\MANIFEST.MF' with strategy 'discard' 
[trace] Stack trace suppressed: run last *:assembly for the full output. 
[error] (*:assembly) deduplicate: different file contents found in the following: 
[error] C:\Users\u987\WebApps\gr\lib_managed\jars\org.eclipse.persistence\javax.persistence\jav ax.persistence-2.1.0.jar:META-INF/eclipse.inf 
[error] C:\Users\u987\WebApps\gr\lib_managed\jars\org.eclipse.persistence\commonj.sdo\commonj.sdo-2.1.1.jar:META-INF/eclipse.inf 

Мой build.sbt выглядит следующим образом:

import AssemblyKeys._ 

name := "TelegramReceiver" 

version := "0.1" 

scalaVersion := "2.10.3" 

retrieveManaged in ThisBuild := true 

libraryDependencies ++= Seq(
    "org.scalatest" % "scalatest_2.10" % "2.0" % "test", 
    "org.eclipse.persistence" % "eclipselink" % "2.5.1" 
) 

Я пытаюсь решить проблему с mergeStrategy от SBT сборки плагина, но он не работает. Я использую sbt 0.13.1.

Заранее благодарим за помощь!

+0

Не могли бы вы привести пример стратегии слияния и желаемого результата. У вас есть 'eclipse.inf' с тем же самым содержимым, если не тот, который вы хотите сохранить? –

ответ

2

Вы можете добавить в настройки пользовательской стратегии слияния, как это:

mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) => 
    { 
    case PathList("eclipse.inf") => MergeStrategy.rename // use any of the available strategies like `first` 
    case x => old(x) 
    }} 

См this doc для более подробной информации.

+0

Спасибо за ваш быстрый ответ. Я пробую это: case PathList ("eclipse.inf") => MergeStrategy.first, но получаю ту же ошибку. Я не уверен, содержит ли содержимое PathList имя файла? – Twistleton

+1

Ваш файл не находится в корневом банке: «case» META-INF/eclipse.inf «' или, может быть, 'case PathList (« META-INF »,« eclipse.inf »)' должен работать лучше. – gourlaysama

+0

Большое спасибо, Алексей Измайлов и gourlaysama - вы спасете мой день. – Twistleton