0
我正在使用sbt 0.13.8和sbt-native-packager 1.0.3。在sbt-native-packager中擴展「通用」配置
我想用不同的java選項設置開發和生產打包配置。這個想法是通過UniversalPluguin
從sbt-native-packager : "universal:packageZipTarball"
創建一個軟件包壓縮包。我也使用「JavaServerAppPackaging
」原型。
我想這Build.scala
:
Error:Error while importing SBT project:
...
at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1310)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
at sbt.std.Transform$$anon$4.work(System.scala:63)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.Execute.work(Execute.scala:235)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
at sbtConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
at sbt.CompletionService$$anon$2.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
我創造與SBT命令「dev:packageZipTarball
發展的兩個壓縮包打包的想法背後:
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保持與失敗「,並用」prod:packageZipTarball
「生產不同的jvm選項。
任何想法爲什麼我不能使用自定義配置來擴展「universal
」配置以實現該方法或替代方法?
偉大的建議!現在我可以執行'dev/universal:packageZipTarball'或'prod/universal:packageZipTarball',它的功能就像一個魅力一樣。謝謝@Muki –
就我而言,我有一個複雜的應用程序,由75個模塊和很多遺留代碼組成,我無法輕鬆拆分爲單獨的模塊。在我的情況下,我必須找到一種方法來讓它工作。 所以,儘管你的論點和建議有很大的意義,但對我而言無能爲力。 –
當然,您可以使用配置範圍,但它們不太直觀且難以調試。 – Muki