在 sbt-native-packager 中扩展 "universal" 配置
Extending "universal" configuration in sbt-native-packager
我正在使用 sbt 0.13.8 和 sbt-native-packager 1.0.3。
我想设置具有不同 java 选项的开发和生产打包配置。这个想法是通过 UniversalPluguin
从 sbt-native-packager : "universal:packageZipTarball"
创建一个包 tarball。我也在使用“JavaServerAppPackaging
”原型。
我试过了 Build.scala
:
import sbt._
import Keys._
import com.typesafe.sbt.packager.universal.UniversalPlugin.autoImport._
import com.typesafe.sbt.packager.archetypes.JavaServerAppPackaging
object Build extends Build {
lazy val commonSettings: Seq[Setting[_]] = Seq(
scalaVersion := "2.11.7",
crossScalaVersions := Seq("2.11.7"),
scalacOptions in Compile ++= Seq( "-unchecked", "-feature", "-language:postfixOps", "-deprecation" )
)
lazy val devConfig = config("dev") extend Universal
lazy val prodConfig = config("prod") extend Universal
lazy val root = (project in file("."))
.settings(commonSettings : _*)
.enablePlugins(JavaServerAppPackaging)
.configs(devConfig, prodConfig)
.settings(
javaOptions in devConfig ++= Seq(
// -J params will be added as jvm parameters
"-J-Xmx384m",
"-J-Xss512k"),
javaOptions in prodConfig ++= Seq(
// -J params will be added as jvm parameters
"-J-Xmx384m",
"-J-Xss740k")
)
}
使用该设置,SBT 不断失败:
Error:Error while importing SBT project:
...
at sbt.Classpaths$$anonfun$updateTask.apply(Defaults.scala:1310)
at scala.Function1$$anonfun$compose.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219.apply(TypeFunctions.scala:40)
at sbt.std.Transform$$anon.work(System.scala:63)
at sbt.Execute$$anonfun$submit$$anonfun$apply.apply(Execute.scala:226)
at sbt.Execute$$anonfun$submit$$anonfun$apply.apply(Execute.scala:226)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.Execute.work(Execute.scala:235)
at sbt.Execute$$anonfun$submit.apply(Execute.scala:226)
at sbt.Execute$$anonfun$submit.apply(Execute.scala:226)
at sbtConcurrentRestrictions$$anon$$anonfun.apply(ConcurrentRestrictions.scala:159)
at sbt.CompletionService$$anon.call(CompletionService.scala:28)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
[error] java.text.ParseException: unknown configuration 'universal'. It is extended by dev in null
[error] Use 'last' for the full log.
See complete log in /Users/ivan/Library/Logs/IdeaIC14/sbt.last.log
我支持创建两个打包的 tarball 的想法,使用 sbt 命令“dev:packageZipTarball
”进行开发,使用不同的 jvm 选项使用“prod:packageZipTarball
”进行生产。
为什么我不能使用自定义配置扩展“universal
”配置以实现该配置或该方法的替代方案?有什么想法吗?
我强烈建议不要扩展 配置 。该行为不是预期的行为。实现不同构建配置的最佳方法是为每个配置创建 子模块。
请参阅 ,其中更详细地解释了如何创建具有不同配置的子项目。
我正在使用 sbt 0.13.8 和 sbt-native-packager 1.0.3。
我想设置具有不同 java 选项的开发和生产打包配置。这个想法是通过 UniversalPluguin
从 sbt-native-packager : "universal:packageZipTarball"
创建一个包 tarball。我也在使用“JavaServerAppPackaging
”原型。
我试过了 Build.scala
:
import sbt._
import Keys._
import com.typesafe.sbt.packager.universal.UniversalPlugin.autoImport._
import com.typesafe.sbt.packager.archetypes.JavaServerAppPackaging
object Build extends Build {
lazy val commonSettings: Seq[Setting[_]] = Seq(
scalaVersion := "2.11.7",
crossScalaVersions := Seq("2.11.7"),
scalacOptions in Compile ++= Seq( "-unchecked", "-feature", "-language:postfixOps", "-deprecation" )
)
lazy val devConfig = config("dev") extend Universal
lazy val prodConfig = config("prod") extend Universal
lazy val root = (project in file("."))
.settings(commonSettings : _*)
.enablePlugins(JavaServerAppPackaging)
.configs(devConfig, prodConfig)
.settings(
javaOptions in devConfig ++= Seq(
// -J params will be added as jvm parameters
"-J-Xmx384m",
"-J-Xss512k"),
javaOptions in prodConfig ++= Seq(
// -J params will be added as jvm parameters
"-J-Xmx384m",
"-J-Xss740k")
)
}
使用该设置,SBT 不断失败:
Error:Error while importing SBT project:
...
at sbt.Classpaths$$anonfun$updateTask.apply(Defaults.scala:1310)
at scala.Function1$$anonfun$compose.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219.apply(TypeFunctions.scala:40)
at sbt.std.Transform$$anon.work(System.scala:63)
at sbt.Execute$$anonfun$submit$$anonfun$apply.apply(Execute.scala:226)
at sbt.Execute$$anonfun$submit$$anonfun$apply.apply(Execute.scala:226)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.Execute.work(Execute.scala:235)
at sbt.Execute$$anonfun$submit.apply(Execute.scala:226)
at sbt.Execute$$anonfun$submit.apply(Execute.scala:226)
at sbtConcurrentRestrictions$$anon$$anonfun.apply(ConcurrentRestrictions.scala:159)
at sbt.CompletionService$$anon.call(CompletionService.scala:28)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
[error] java.text.ParseException: unknown configuration 'universal'. It is extended by dev in null
[error] Use 'last' for the full log.
See complete log in /Users/ivan/Library/Logs/IdeaIC14/sbt.last.log
我支持创建两个打包的 tarball 的想法,使用 sbt 命令“dev:packageZipTarball
”进行开发,使用不同的 jvm 选项使用“prod:packageZipTarball
”进行生产。
为什么我不能使用自定义配置扩展“universal
”配置以实现该配置或该方法的替代方案?有什么想法吗?
我强烈建议不要扩展 配置 。该行为不是预期的行为。实现不同构建配置的最佳方法是为每个配置创建 子模块。
请参阅