J'essaie de créer des versions avec des fichiers de configuration différés avec l'aide de SBT Native Packager. J'ai une disposition standard de projet pour les projets Scala:SBT Native Packager: Construire le même paquet avec différentes configurations
my-app
--/project
----/build.properties
----/plugins.sbt
--/src
----/main
------/java
------/resources
------/scala
----/test
------/java
------/resources
------/scala
build.sbt
J'ajouté le plugin-Packager SBT natif de mon projet et a décidé de répéter l'SBT submodule approach.
Voilà comment mon fichier build.sbt ressemble:
import sbt.Keys._
scalaVersion in ThisBuild := "2.12.1"
lazy val app = project
.in(file("."))
.settings(
name := "backend",
version := "1.0",
libraryDependencies ++= {
val akkaVersion = "2.4.17"
val akkaHttpVersion = "10.0.5"
Seq(
"com.typesafe.akka" %% "akka-actor" % akkaVersion,
"com.typesafe.akka" %% "akka-http" % akkaHttpVersion,
"com.typesafe.akka" %% "akka-http-spray-json" % akkaHttpVersion
)
}
)
lazy val devPackage = project
.in(file("build/dev"))
.enablePlugins(JavaAppPackaging)
.settings(
name := "backend-dev",
resourceDirectory in Compile := (resourceDirectory in (app, Compile)).value,
mappings in Universal += {
((resourceDirectory in Compile).value/"dev.conf") -> "conf/application.conf"
}
)
.dependsOn(app)
Et voici application.conf et dev.conf (les deux sont situés dans src/main/resources:
akka {
loglevel = INFO
stdout-loglevel = INFO
loggers = ["akka.event.slf4j.Slf4jLogger"]
default-dispatcher {
fork-join-executor {
parallelism-min = 8
}
}
http {
server {
server-header = "PinPoint REST API"
request-timeout = "10.seconds"
}
}
}
database {
dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
properties = {
databaseName = "pg_db"
user = "alex"
password = ""
}
numThreads = 10
}
et
include "application"
database {
dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
properties = {
databaseName = "pg_db_dev"
user = "alex"
password = "secure_password"
}
numThreads = 10
}
Après avoir couru sbt devPackage/stage
dans le terminal que je reçois nouveau répertoire « build » dans la folde racine r du projet. Mais à l'intérieur du: build/dev/target/universal/stage/ Il n'y a pas de dossier "bin" avec un script sh exécutable.
Alors, comment résoudre ce problème?
Si vous avez différentes classes principales, vous devez spécifier un d'entre eux comme MainClass dans Compile: = Certains ("foo.bar .Principale"). Voir http://www.scala-sbt.org/sbt-native-packager/archetypes/java_app/ pour plus de détails. – kardapoltsev
@kardapoltsev Je n'ai qu'une seule classe principale –