Почему сопоставления в Universal не влияют на то, что включено в tarball?

Резюме моего build.sbt выглядит так:

import com.github.bigtoast.sbtliquibase.LiquibasePlugin
import S3._
import com.typesafe.sbt.SbtNativePackager._
import com.typesafe.sbt.SbtNativePackager.Universal
import com.typesafe.sbt.packager.Keys._
import Path.flat

mappings in Universal ++= {
  ((baseDirectory.value / "src/main/migrations" * "*").get map { f => f -> (f.name) })
}

Когда я запускаю universal:packageZipTarball, я ожидаю, что файлы, которые у меня есть в src/main/migrations, появятся в окончательном архиве. Они не делают.

Что я вижу:

a database2-0.34.0
a database2-0.34.0/lib
a database2-0.34.0/lib/com.trailhunger.database2-0.34.0.jar
a database2-0.34.0/lib/org.postgresql.postgresql-9.3-1101-jdbc4.jar
a database2-0.34.0/lib/org.scala-lang.scala-library-2.10.3.jar

Очень похожий код в другом проекте в моей сборке работает отлично.


person Sarge    schedule 09.08.2014    source источник


Ответы (1)


tl;dr Ваша сборка мне подходит.

Вот полный build.sbt, чтобы воспроизвести вашу проблему:

packageArchetype.java_application

mappings in Universal ++= {
  ((sourceDirectory in Compile).value / "migrations" * "*").get.map { f => 
    f -> (f.name)
  }
}

Следует помнить, что нужно поместить packageArchetype.java_application перед тем, как самостоятельно устанавливать ключи в сборке, поскольку порядок имеет значение.

Помимо порядка, есть небольшое изменение с sourceDirectory in Compile, которое дает мне правильный каталог src/main без объединения путей самостоятельно.

> show sourceDirectory
[info] /Users/jacek/sandbox/sbt-native-packager-playground/src
> show compile:sourceDirectory
[info] /Users/jacek/sandbox/sbt-native-packager-playground/src/main

project/build.properties

sbt.version=0.13.6-M1

проект/sbt-native-packager.sbt

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

Под src/main/migrations у меня есть один файл — migration1.txt — который добавляется в окончательный архив.

> universal:packageZipTarball
[info] Wrote /Users/jacek/sandbox/sbt-native-packager-playground/target/scala-2.10/sbt-native-packager-playground_2.10-0.1-SNAPSHOT.pom
a sbt-native-packager-playground-0.1-SNAPSHOT
a sbt-native-packager-playground-0.1-SNAPSHOT/lib
a sbt-native-packager-playground-0.1-SNAPSHOT/migration1.txt
a sbt-native-packager-playground-0.1-SNAPSHOT/lib/default.sbt-native-packager-playground-0.1-SNAPSHOT.jar
a sbt-native-packager-playground-0.1-SNAPSHOT/lib/org.scala-lang.scala-library-2.10.4.jar
[success] Total time: 0 s, completed Aug 9, 2014 10:17:37 PM

Это значение universal:mappings для справки:

> show universal:mappings
[info] Wrote /Users/jacek/sandbox/sbt-native-packager-playground/target/scala-2.10/sbt-native-packager-playground_2.10-0.1-SNAPSHOT.pom
[info] ArrayBuffer((/Users/jacek/sandbox/sbt-native-packager-playground/target/scala-2.10/sbt-native-packager-playground_2.10-0.1-SNAPSHOT.jar,lib/default.sbt-native-packager-playground-0.1-SNAPSHOT.jar), (/Users/jacek/.sbt/boot/scala-2.10.4/lib/scala-library.jar,lib/org.scala-lang.scala-library-2.10.4.jar), (/Users/jacek/sandbox/sbt-native-packager-playground/src/main/migrations/migration1.txt,migration1.txt))
[success] Total time: 0 s, completed Aug 9, 2014 10:16:27 PM
person Jacek Laskowski    schedule 09.08.2014
comment
Привет, Яцек, мне понравился (исходный каталог в компиляции). Это было приятное прикосновение. К сожалению, все еще не работает для меня. Будет ли проблемой наличие двух файлов в проекте / в корневом модуле? Я не понимаю, как бы выполнялась задача, если бы это было так. - person Sarge; 10.08.2014