Scala 扩展;环球公司;sbt本机打包程序中的配置

Scala 扩展;环球公司;sbt本机打包程序中的配置,scala,sbt,sbt-native-packager,Scala,Sbt,Sbt Native Packager,我正在使用sbt 0.13.8和sbt native packager 1.0.3 我想用不同的java选项设置开发和生产打包配置。这个想法是通过sbt native packager的UniversalPluguin创建一个包tarball:“universal:packageZipTarball”。我还使用了“JavaServerAppPackaging”原型 我尝试了这个Build.scala: 导入sbt_ 导入密钥_ 导入com.typesafe.sbt.packager.univer

我正在使用sbt 0.13.8和sbt native packager 1.0.3

我想用不同的java选项设置开发和生产打包配置。这个想法是通过
sbt native packager的
UniversalPluguin
创建一个包tarball:“universal:packageZipTarball”
。我还使用了“
JavaServerAppPackaging
”原型

我尝试了这个
Build.scala

导入sbt_
导入密钥_
导入com.typesafe.sbt.packager.universal.UniversalPlugin.autoImport_
导入com.typesafe.sbt.packager.archetypes.JavaServerAppPackaging
对象构建扩展了构建{
lazy val commonSettings:Seq[设置[]]=Seq(
scalaVersion:=“2.11.7”,
交叉标度偏差:=序号(“2.11.7”),
Compile++=Seq中的scalacOptions(“-unchecked”、“-feature”、“-language:postfixOps”、“-deprecation”)
)
lazy val devConfig=config(“dev”)扩展通用
lazy val prodConfig=config(“prod”)扩展通用
lazy val root=(文件中的项目(“.”)
.设置(公共设置:*)
.enablePlugins(JavaServerAppPackaging)
.configs(devConfig、prodConfig)
.设置(
devConfig++=Seq中的javaOptions(
//-J参数将作为jvm参数添加
“-J-Xmx384m”,
“-J-Xss512k”),
prodConfig++=Seq中的javaOptions(
//-J参数将作为jvm参数添加
“-J-Xmx384m”,
“-J-Xss740k”)
)
}
在该设置下,SBT不断出现故障:

错误:导入SBT项目时出错:
...
在sbt.classpath$$anonfun$updateTask$1.apply(默认值.scala:1310)
在scala.Function1$$anonfun$compose$1.apply处(Function1.scala:47)
在sbt.$tilde$morerar$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
在sbt.std.Transform$$anon$4.work(System.scala:63)
在sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
在sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
在sbt.ErrorHandling$.wideConvert时(ErrorHandling.scala:17)
在sbt.Execute.work(Execute.scala:235)
在sbt.Execute$$anonfun$submit$1.apply处(Execute.scala:226)
在sbt.Execute$$anonfun$submit$1.apply处(Execute.scala:226)
在sbtConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
在sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
运行(Thread.java:745)
[错误]java.text.ParseException:未知配置“通用”。它由dev在null中扩展
[错误]对完整日志使用“last”。
请参阅完整的登录/Users/ivan/Library/Logs/IdeaIC14/sbt.last.log
我支持创建两个打包的tarball,用于使用sbt命令“
dev:packageZipTarball
”进行开发,以及使用不同jvm选项“
prod:packageZipTarball
”进行生产


你知道为什么我不能用自定义配置来扩展“
通用
”配置以实现这一点吗?或者,我强烈建议不要扩展配置。这种行为不是预期的。实现不同构建配置的最佳方法是为每个配置创建子模块


请参阅,其中更详细地解释了如何创建具有不同配置的子项目。

好建议!。现在,我能够执行
dev/universal:packageZipTarball
prod/universal:packageZipTarball
,它的工作非常出色。感谢@muki在我的例子中,我有一个由75个模块和大量遗留代码组成的复杂应用程序,我无法轻松地将其拆分为单独的模块。在我的情况下,我必须找到一种方法让它以某种方式运作。因此,尽管您的论点和建议很有道理,但在我的案例中它们并没有帮助。当然,您可以使用配置作用域,但它们不那么直观,更难调试。