Как я могу добавить базовый каталог в свой файл tar.gz с помощью sbt-native-packager?

В моем проекте используется Play Framework 2.3.7 (в котором используются sbt 0.13.5, sbt-native-packager и Activator 1.2.12), и я создаю файл tar.gz с

activator universal:package-bin

Сгенерированный файл tar.gz включает каталоги (conf, bin, share, conf).

Мне нужен базовый каталог (/ opt / my_application /) внутри файла tar.gz, в результате чего:

/opt/my_application/conf
/opt/my_application/bin

Я пробовал несколько комбинаций сопоставлений в моем build.sbt из http://www.scala-sbt.org/sbt-native-packager/formats/universal.html, но безуспешно.

Спасибо


person Eduardo Colabardini    schedule 21.01.2015    source источник


Ответы (2)


Одна альтернатива - добавить задачу sbt для вызова сценария bash:

lazy val generateTarGz = taskKey[Unit]("Generate tar.gz file")

generateTarGz := {
    "build.sh" !    
}

Тогда вы звоните:

activator clean stage generateTarGz

Сценарий bash будет вызван и сгенерирует tar.gz с target / universal / stage / *.

person Eduardo Colabardini    schedule 22.01.2015
comment
Вы все можете сделать это внутри sbt. Использование сценария оболочки исключает всех пользователей Windows, если вы также не предоставите сценарий летучей мыши. Также это усложняет сборку, чем есть на самом деле. - person Muki; 24.01.2015

Вы должны иметь возможность переназначить существующий mappings in Universal, как описано примеры filter-remove-mappings. Я должен выглядеть примерно так

mappings in Universal := {
    val universalMappings = (mappings in Universal).value
    val appName = name.value
    universalMappings map {
        case (file, path) =>  (file, s"$appName/$path")
    }
}
person Muki    schedule 23.01.2015
comment
Спасибо за фрагмент кода, это почти все. При изменении пути к файлу на / opt / myapp / $ path путь внутри tar.gz становится /myapp-0.0.1-SNAPSHOT/opt/myapp/$path. Проблема здесь в том, что имя и версия приложения являются базовым каталогом. Как я могу это исправить? - person Eduardo Colabardini; 27.01.2015
comment
Для этого существует открытая проблема с временным решением. - person Muki; 30.01.2015