2013-12-05 3 views
7

Я пытаюсь создать исполняемую банку с помощью плагина сборки SBT.Ошибка DeDuplication с плагином сборки SBT

Я кончаю с ниже ошибками:

[error] (app/*:assembly) deduplicate: different file contents found in the following: 
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty.orbit/javax.servlet/orbits/javax.servlet-3.0.0.v201112011016.jar:about.html 
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-continuation/jars/jetty-continuation-8.1.8.v20121106.jar:about.html 
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-http/jars/jetty-http-8.1.8.v20121106.jar:about.html 
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-io/jars/jetty-io-8.1.8.v20121106.jar:about.html 
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-security/jars/jetty-security-8.1.8.v20121106.jar:about.html 
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-server/jars/jetty-server-8.1.8.v20121106.jar:about.html 
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-servlet/jars/jetty-servlet-8.1.8.v20121106.jar:about.html 
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-util/jars/jetty-util-8.1.8.v20121106.jar:about.html 
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-webapp/jars/jetty-webapp-8.1.8.v20121106.jar:about.html 
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-xml/jars/jetty-xml-8.1.8.v20121106.jar:about.html 
[error] Total time: 2562 s, completed Dec 5, 2013 12:03:25 PM 

После прочтения вики из сборки плагина, я добавил стратегию слияния в build.scala файл. Кажется, он не работает. Я не уверен, правильно ли это исправлено или нет. Может кто-то подскажет мне правильную стратегию.

Ниже код, который я имею в build.scala файле:

mergeStrategy in assembly <<= (mergeStrategy in assembly) { 
     (old) => { 
     case "about.html" => MergeStrategy.discard 
     case "logback.xml" => MergeStrategy.first //case PathList("logback.xml") => MergeStrategy.discard 
     case x => old(x) 
     } 
    } 

Я закодированы интеграции плагина с моим приложением в соответствии с этим документ: Standalone deployment of Scalatra servlet

Я попытался diffrent стратегии как MergeStrategy.rename и MergeStrategy.deduplicate. Но ничего не работает. Ищет помощь ...

ответ

1

Ваш MergeStrategy выглядит правильно. Единственные необработанные конфликты - «about.html» в банках причала, поэтому case "about.html" => MergeStrategy.discard должен просто сделать это.

Если вы все еще получаете сообщение об ошибке, я подозреваю, что повторная проводка установки mergeStrategy in assembly либо не идет, либо идет в неправильном порядке. Единственный способ узнать наверняка - увидеть свою сборку. Ответ @Stefan Оллингер на связанном вопрос, например, устанавливает проект следующим образом:

lazy val project = Project("myProj", file(".")). 
    settings(mySettings: _*). 
    settings(myAssemblySettings:_*) 

Не могли бы вы опубликовать Build.scala на gist, если это возможно?

+1

Ниже фактический нерабочем код: https: //gist.github.com/rajeevprasanna/7868988 я написал выше код, следуя вашим инструкциям по этой ссылке: https://github.com/eed3si9n/sbt -assembly-full-config-sample/blob/master/project/builds.scala Теперь я удалил нижние три ссылки, связанные с созданием проекта. то это сработало. Рабочий код: https://gist.github.com/rajeevprasanna/7868999 – Rajeev

+0

В моем примере 'buildSettings' содержит только основные параметры, общие для всех проектов, таких как' version' и 'organization', а' assemblySettings' загружается на 'appSettings'. Ваш первый gist загружает всевозможные настройки в 'buildSettings', включая' assemblySettings', и он снова загружается в 'appSettings'. Таким образом, вы, возможно, прочитали мой код, но вы не следовали моему коду. Если вам нужен только корневой уровень, вам лучше использовать 'build.sbt'. –

+0

Благодарим вас за разъяснение. Я только начал изучать СБТ. У меня мало знаний в SBT. Так что попал в эту проблему. – Rajeev