如何在 Play 中组织 java 和 scala 代码?
How to organize java and scala code in Play?
activator new
结果:
Fetching the latest list of templates...
Browse the list of templates: http://lightbend.com/activator/templates
Choose from these featured templates or enter a template name:
1) minimal-akka-java-seed
2) minimal-akka-scala-seed
3) minimal-java
4) minimal-scala
5) play-java
6) play-scala
(hit tab to see a list of all templates)
>
play-java
和play-scala
的剖析如下:
ls project-*/app
...-java/app:
controllers filters Filters.java Module.java services views
...-scala/app:
controllers filters Filters.scala Module.scala services views
根据 this 文档:
You also have the option of using the default layout used by SBT and
Maven. Please note that this layout is experimental and may have
issues. In order to use this layout, you must disable the layout
plugin and set up explicit monitoring for twirl templates:
build.sbt → Application build script
src → Application sources
└ main → Compiled asset sources
└ java → Java sources
└ controllers → Java controllers
└ models → Java business layer
└ scala → Scala sources
└ controllers → Scala controllers
└ models → Scala business layer
└ resources → Configurations files and other non-compiled resources (on classpath)
└ application.conf → Main configuration file
└ routes → Routes definition
讨论
基于 应该合并 java 和 scala 文件?例如:
合并
...-java/app/controllers:
AsyncController.java CountController.java HomeController.java
...-scala/app/controllers:
AsyncController.scala CountController.scala HomeController.scala
至
.../app/controllers
AsyncController.java CountController.java HomeController.java
AsyncController.scala CountController.scala HomeController.scala
这是结合 java 和 scala 类 的 Play 剖析还是应该在 app/controllers 文件夹中创建 java 和 scala 目录?
驻留在 scala 和 java 项目中的 routes
文件是相同的:
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
# An example controller showing a sample home page
GET / controllers.HomeController.index
# An example controller showing how to use dependency injection
GET /count controllers.CountController.count
# An example controller showing how to write asynchronous code
GET /message controllers.AsyncController.message
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
您不需要特殊的 "combine" 布局 - 您可以在同一个包中使用 java 和 scala。
示例:
package controllers;
public class MyJavaClass {
public static String getName(){
return "My Name";
}
}
只需将 controllers
和 models
文件夹放入 app
文件夹,然后将 scala 和 java 文件放入其中。
build.sbt → Application build script
app → Application sources
└ controllers → controllers (java or scala)
└ models → business layer (java or scala)
└ views
public
conf
└ application.conf → Main configuration file
└ routes → Routes definition
activator new
结果:
Fetching the latest list of templates...
Browse the list of templates: http://lightbend.com/activator/templates
Choose from these featured templates or enter a template name:
1) minimal-akka-java-seed
2) minimal-akka-scala-seed
3) minimal-java
4) minimal-scala
5) play-java
6) play-scala
(hit tab to see a list of all templates)
>
play-java
和play-scala
的剖析如下:
ls project-*/app
...-java/app:
controllers filters Filters.java Module.java services views
...-scala/app:
controllers filters Filters.scala Module.scala services views
根据 this 文档:
You also have the option of using the default layout used by SBT and Maven. Please note that this layout is experimental and may have issues. In order to use this layout, you must disable the layout plugin and set up explicit monitoring for twirl templates:
build.sbt → Application build script
src → Application sources
└ main → Compiled asset sources
└ java → Java sources
└ controllers → Java controllers
└ models → Java business layer
└ scala → Scala sources
└ controllers → Scala controllers
└ models → Scala business layer
└ resources → Configurations files and other non-compiled resources (on classpath)
└ application.conf → Main configuration file
└ routes → Routes definition
讨论
基于
合并
...-java/app/controllers:
AsyncController.java CountController.java HomeController.java
...-scala/app/controllers:
AsyncController.scala CountController.scala HomeController.scala
至
.../app/controllers
AsyncController.java CountController.java HomeController.java
AsyncController.scala CountController.scala HomeController.scala
这是结合 java 和 scala 类 的 Play 剖析还是应该在 app/controllers 文件夹中创建 java 和 scala 目录?
驻留在 scala 和 java 项目中的 routes
文件是相同的:
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
# An example controller showing a sample home page
GET / controllers.HomeController.index
# An example controller showing how to use dependency injection
GET /count controllers.CountController.count
# An example controller showing how to write asynchronous code
GET /message controllers.AsyncController.message
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
您不需要特殊的 "combine" 布局 - 您可以在同一个包中使用 java 和 scala。
示例:
package controllers;
public class MyJavaClass {
public static String getName(){
return "My Name";
}
}
只需将 controllers
和 models
文件夹放入 app
文件夹,然后将 scala 和 java 文件放入其中。
build.sbt → Application build script
app → Application sources
└ controllers → controllers (java or scala)
└ models → business layer (java or scala)
└ views
public
conf
└ application.conf → Main configuration file
└ routes → Routes definition