You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Gradle将Scala集成至已有Java项目?

Yes, You Absolutely Can Integrate Scala into a Java Project with Gradle (and Coexist in the Same Package!)

Absolutely! Gradle makes integrating Scala into an existing Java project a breeze, and Java and Scala classes can fully coexist in the same package—no workarounds required. Here's how to set it up step by step:

1. Add the Scala Plugin to Your Build Script

First, apply Gradle's official Scala plugin, which handles compiling Scala code, managing dependencies, and seamless integration with Java.

For Groovy-based build.gradle:

plugins {
    id 'java'
    id 'scala'
}

For Kotlin-based build.gradle.kts:

plugins {
    java
    scala
}

2. Configure Scala Dependencies

Next, add the core Scala library dependency (adjust the version to match your project needs—we’re using 2.13.x here, but 2.12.x or 3.x works too):

Groovy:

dependencies {
    // Core Scala library
    implementation 'org.scala-lang:scala-library:2.13.12'
    
    // Optional: For Scala testing (if needed)
    testImplementation 'org.scala-lang:scala-test:3.2.15'
    testRuntimeOnly 'org.scala-lang:scala-test-mockito:3.2.15'
}

Kotlin:

dependencies {
    implementation("org.scala-lang:scala-library:2.13.12")
    testImplementation("org.scala-lang:scala-test:3.2.15")
    testRuntimeOnly("org.scala-lang:scala-test-mockito:3.2.15")
}

3. Organize Your Code (Same Package, Flexible Structure)

Gradle’s Scala plugin supports two straightforward setups for coexisting Java/Scala code in the same package:

Keep Java files in src/main/java and Scala files in src/main/scala, using identical package structures. For example:

  • Java class: src/main/java/com/example/HelloJava.java (package com.example)
  • Scala class: src/main/scala/com/example/HelloScala.scala (package com.example)

Both classes compile to the same classpath, and you can call them interchangeably just like regular Java/Scala classes.

Option 2: Mixed Files in the Same Directory

If you prefer, you can even place Java and Scala files directly in the same directory (e.g., src/main/java/com/example). The Scala plugin automatically detects and compiles Scala files alongside Java files—no extra config needed.

4. Cross-Language Calls Work Seamlessly

No special syntax is required to call Scala from Java or vice versa:

  • From Java, call a Scala class like any other Java class:
    package com.example;
    public class HelloJava {
        public static void main(String[] args) {
            HelloScala.sayHello(); // Calls Scala method
        }
    }
    
  • From Scala, call Java classes naturally:
    package com.example
    object HelloScala {
      def sayHello(): Unit = {
        println(HelloJava.getMessage()) // Calls Java method
      }
    }
    

5. Compilation Order is Handled Automatically

Gradle’s Scala plugin intelligently manages compilation order based on dependencies. If a Java class depends on a Scala class, Gradle compiles Scala first; if a Scala class depends on Java, it compiles Java first—no manual configuration required.


内容的提问来源于stack exchange,提问作者user3378430

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:00:21