【问题标题】:Gradle init project for Scala applicationScala 应用程序的 Gradle 初始化项目
【发布时间】:2018-03-19 13:31:58
【问题描述】:

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

我能够通过执行以下命令创建一个 Scala 库初始化项目:

gradle init --type scala-library

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

gradle init --type scala-application

不支持请求的构建设置类型“scala-application”。支持的类型:'basic'、'groovy-application'、'groovy-library'、'java-application'、'java-library'、'pom'、'scala-library'。

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

【问题讨论】:

标签: scala gradle


【解决方案1】:

不,没有 scala 应用程序模板,但是很容易通过两步将您生成的“scala-library”项目变成 scala 应用程序:

  1. 在 src/main/scala 下的包下创建主类和方法
  2. 在您的 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'

【讨论】:

  • 谢谢。我们有理由这样做吗?我们有更本土的方式来做到这一点吗?
【解决方案2】:

除了Java 之外,您几乎只需添加apply plugin: 'scala' 并将Main 更改为:

object Main extends App {
    println('Hello, World!')
}

我最终做到了。

另外,如果你想要联合编译(并且让编译器在同一个地方理解JavaScala)你可以添加下面的sn-p(每个源集一个块:maintestjmh等):

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 '**/*.*'
}

【讨论】:

    【解决方案3】:

    Gradle 6.7 开始,scala-application 构建类型现已存在。

    【讨论】:

      猜你喜欢
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多