2015-05-13 3 views
0

Как я могу изменить вывод окончательного упакованного почтового индекса, чтобы переместить содержимое каталога «lib» на один уровень. В основном я выходной почтовый и содержимое примерно так:sbt изменить каталог вывода lib при использовании sbt-native-packager

ZIP FILE CONTENT: 
-- my-plugin-1.0.jar 
-- /lib 
    -- /lib/mydependency1.jar 
    -- /lib/mydependency2.jar 

ZIP FILE CONTENT I WISH TO HAVE: 
-- my-plugin-1.0.jar 
-- mydependency1.jar 
-- mydependency2.jar 

Я хочу, чтобы переместить все в «Lib» на один уровень вверх к корню.

SBT версия 0.13.0

Вот мой build.sbt:

import NativePackagerHelper._ 

organization := "com.company.product" 
name := "my-plugin" 
version := "1.0" 
enablePlugins(UniversalPlugin) 
packageName in Universal:= "deployment" 
publishArtifact in (Compile, packageDoc) := false 
artifactName := { 
    (sv: ScalaVersion, module: ModuleID, artifact: Artifact) => 
     artifact.name + "-" + module.revision + "." + artifact.extension 
} 
javacOptions ++= Seq("-source", "1.8") 
mappings in Universal <+= packageBin in Compile map { jar => jar -> (jar.getName()) } 
topLevelDirectory := None 

plugins.sbt

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.0") 

командной строки:

sbt universal:packageBin 

ответ

3

Похоже, ваш требование - это первый класс гражданин в sbt-native-packager:

mappings in Universal ++= contentOf("src/main/resources/cache") 
+0

Привет, спасибо за ответ, мой вопрос был сформулирован плохо, хотя. Я обновил вопрос, чтобы отразить реальную проблему. –

+0

Чтобы решить мою «настоящую» проблему, мне пришлось это сделать: сопоставления в Universal ++ = contentOf (unmanagedBase.value), поэтому ваш ответ правильный. Теперь мне просто нужно выяснить, как удалить каталог «lib» в zip. Спасибо! –

+0

Объект 'mappings' - это просто' Seq [(File, String)] '. Просто отфильтруйте строки, которые вы не хотите, с помощью сопоставлений в Universal: = (сопоставления в Universal) .filterNot {case (src, dest) => dest startsWith "lib /"} ' – Muki