Scala应用程序的Gradle init项目

Scala应用程序的Gradle init项目,scala,gradle,Scala,Gradle,我想为Scala创建一个框架控制台应用程序,即一个具有打印“Hello world”主函数的单一入口类 我能够通过执行以下操作创建Scala library init项目: gradleinit——键入scala库 但是,似乎没有scala应用程序运行: gradleinit——键入scala应用程序 不支持请求的生成设置类型“scala应用程序”。支持的类型:“基本”、“groovy应用程序”、“groovy库”、“java应用程序”、“java库”、“pom”、“scala库” 没有用于Gr

我想为Scala创建一个框架控制台应用程序,即一个具有打印“Hello world”主函数的单一入口类

我能够通过执行以下操作创建Scala library init项目:

gradleinit——键入scala库

但是,似乎没有scala应用程序运行:

gradleinit——键入scala应用程序

不支持请求的生成设置类型“scala应用程序”。支持的类型:“基本”、“groovy应用程序”、“groovy库”、“java应用程序”、“java库”、“pom”、“scala库”


没有用于Gradle的Scala控制台应用程序模板吗?

没有,没有Scala应用程序模板,但是可以通过两个步骤将生成的“Scala库”项目创建为Scala应用程序:

  • 在src/main/scala下的包下创建主类和方法
  • 在gradle.build中添加两行代码,以添加“应用程序”插件并指定主类
  • 例如,添加src/main/scala/com/example/myapp/main.scala:

    package com.example.myapp
    
    object Main {
      def main(args: Array[String]): Unit = {
        println("Hello")
      }
    }
    
    然后在gradle.build中添加:

    apply plugin: 'application'
    
    mainClassName='com.example.myapp.Main'
    

    除了Java之外,您几乎只需要添加
    apply插件:“scala”
    并将
    Main
    更改为:

    object Main extends App {
        println('Hello, World!')
    }
    
    我最后就是这么做的

    此外,如果您想要联合编译(并且让编译器在同一位置理解
    Java
    Scala
    ),您可以添加以下代码段(每个源代码集一个代码块:
    main
    test
    jmh
    ,等等):


    scala应用程序开始,
    构建类型现在已经存在。

    是否有任何声明说明为什么Gradle不包含任何scala应用程序模板?您可以从java应用程序项目开始,然后按照Gradle文档中有关scala插件的描述添加“scala”插件:谢谢。我们这样做有什么原因吗?我们有没有一种更地道的方式来做这件事?
    sourceSets.main {
        java.srcDirs = []
        scala.srcDirs = ['src/main/scala', 'src/main/java']
        scala.include '**/*.*'
    }
    
    sourceSets.test {
        java.srcDirs = []
        scala.srcDirs = ['src/test/scala', 'src/test/java']
        scala.include '**/*.*'
    }