我有2个项目,使用PlayFramework 2.4开发.虽然它们在概念上是完全分离的,但它们共享一些共同特征,如进化管理(Liquibase),CRUD管理机制,通知(电子邮件,短信)机制等.因此,决定将每个项目分成2个模块:common"核心"模块,其中包含所有描述的逻辑,以及"项目"模块,其中包含项目特定的服务,模板,视图.
在Play Framework中实现这一目标的推荐方法是"子项目"概念.但由于至少有两个原因,显然不是一种选择:
我目前的解决方案是创建核心模块,并将其作为"项目"Play应用程序中的依赖项提供.尽管这种方法部分有效,但仍有一些主要缺点:
我被迫将常用模板复制到两个项目中,我几乎无法编写令人烦恼的常见控制器
感谢任何帮助.也许这可以通过核心模块的某种高度自定义的构建和发布过程来实现?
我正在尝试将PlayFramework 2.4项目导入IntelliJ 14.1.3.我无法导入现有的(在2.4之前创建),所以做了以下步骤:
activator new appName
我得到了这个例外:
Error while importing SBT project: ... at
scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:34) at
scala.collection.TraversableLike$class.map(TraversableLike.scala:244) at
scala.collection.AbstractTraversable.map(Traversable.scala:105) at
sbt.Classpaths$.appRepositories(Defaults.scala:1729) at
sbt.Classpaths$$anonfun$41.apply(Defaults.scala:1102) at
sbt.Classpaths$$anonfun$41.apply(Defaults.scala:1102) at
scala.Function1$$anonfun$compose$1.apply(Function1.scala:47) at
scala.Function1$$anonfun$compose$1.apply(Function1.scala:47) at
sbt.EvaluateSettings$MixedNode.evaluate0(INode.scala:175) at
sbt.EvaluateSettings$INode.evaluate(INode.scala:135) at
sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$submitEvaluate$1.apply$mcV$sp(INode.scala:69) at
sbt.EvaluateSettings.sbt$EvaluateSettings$$run0(INode.scala:78) at
sbt.EvaluateSettings$$anon$3.run(INode.scala:74) 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.lang.IllegalArgumentException: URI has an authority component [error] Use
'last' for the full log. Invalid response. Java HotSpot(TM) 64-Bit Server VM
warning: ignoring option MaxPermSize=384M; support was removed in 8.0 See
complete log …
Run Code Online (Sandbox Code Playgroud)