【问题标题】:How to organize java and scala code in Play?如何在 Play 中组织 java 和 scala 代码?
【发布时间】:2017-02-13 13:23:36
【问题描述】:

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-javaplay-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 文档:

您还可以选择使用 SBT 使用的默认布局和 马文。请注意,此布局是实验性的,可能有 问题。要使用此布局,您必须禁用该布局 插件并为旋转模板设置显式监控:

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

讨论

基于this answer 应该结合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)

【问题讨论】:

    标签: java scala playframework typesafe-activator


    【解决方案1】:

    只需将您的 controllersmodels 文件夹放入 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
    

    【讨论】:

      【解决方案2】:

      你不需要特殊的“组合”布局——你可以在同一个包中使用 java 和 scala。

      例子:

      package controllers;
      
      public class MyJavaClass {
      
        public static String getName(){
          return "My Name";
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-17
        • 1970-01-01
        • 2010-11-09
        相关资源
        最近更新 更多