Kotlin基础 build.gradle.kts常见问题之compile

这篇博客指出,早期的Kotlin与Java混合开发时,build.gradle.kts文件中使用`compile`的方式在新版本的IntelliJ IDEA和Gradle下已不适用。文章详细说明了在2021年的IntelliJ IDEA 2021.2和Gradle 7.2版本中,应该如何正确配置build.gradle.kts文件,以避免过时的`compile`依赖。并提醒开发者注意Gradle版本升级可能导致的不兼容问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上有些视频教程讲解过程中,在讲解如何将Java和kotlin一起使用的时,在编辑build.gradle时,步骤如下:

① 修改build.gradle -> build.gradle.kts

② 在build.gradle.kts中添加

plugins {
    application;
    kotlin("jvm");
}

application {
    mainClassName = "Main";
}
dependencies {
    compile(kotlin("stdlib"));
}
repositories {
    jcenter();
}

对于这个编写方式,没有问题。但是要注意,这是2017年~2018年时候的Intellij IDEA、gradle 4.1版本时候的写法。

对于上述写法,在2021年时候,Intellij IDEA2021.2、gradle 7.2版本就不适用了。

大家需要将Build.gradle.kts编写成如下:

import java.util.regex.Pattern.compile

plugins {
    application;
    kotlin("jvm") version "1.5.10"   //版本要与File->project structure -> Project Settings -> Libraries 的‘Gradle: org.jetbrains.kotlin:kotlin-stdlib’相同
}

application {
    mainClassName = "Dog";  //此处的Dog为kotlin文件名  Dog.java  注意看下面的Java文件名
}

dependencies {
    compile("org.jetbrains.kotlin:kotlin-stdlib"); //此处是重点, 要引入包文件,注意与以前版本的写法区别
}

repositories{
    jcenter()
}

其余测试代码如下:

src - main - kotlin 文件夹:

Aniaml.kt
class Aniaml(var name : String) {
    fun cry() {
        println("animal $name can cry")
    }
}

src - main - java 文件夹:

Dog.java

public class Dog {
    public static void main(String [] args) {
        Aniaml d = new Aniaml("Cat");
        d.cry();
    }
}

测试结果:

> Task :compileKotlin
> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes

> Task :run
animal Cat can cry

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
 

基础编译器(他们将其改为kompiler——开创了一系列以K字打头的用语——甚至连 contributors这类词他们也用改成了kontributors)可以被独立出来并嵌入到 Maven、Ant 或 Gradle 工具链中。这使得在 IDE 中开发的代码能够利用已有的机制来构建,从而尽可能的减少了在新环境中使用所受的干预,哪怕与那些没有安装 Kotlin 插件的开发人员一起合作项目也没有问题。 The IntelliJ Kotlin 插件扩展了 Java 编译器使得 Kotlin 代码能够得以编写、编译和调试。除此之外,关于基本的 Java 集合,已经有编写好的帮助函数,可以更顺畅地衔接将在 Java 8 中出现的集合扩展。 有两篇文章对 KotlinJava 以及 Kotlin 与 Scala 分别进行了比较,对各自特性和异同进行了对比。即便 Scala 可能还是更为强大些,Kotlin 还是尝试着提供比 Java 更好的函数、模式匹配、空指针预防和泛型。该语言同时也支持特征(traits)和模式匹配。 Kotlin 插件在当前版本的 IntelliJ 和 Eclipse 中均已能使用。 [4] Kotlin,类似 Xtend 一样,旨在提供一种更好的 Java 而非重建整个新平台。这两种语言都向下编译为字节码(虽然 Xtend 是首先转换成相应的 Java 代码,再让 Java 编译器完成繁重的工作),而且两者都引入了函数和扩展函数(在某个有限范围内静态地增加一个新方法到某个已有类型的能力)。Xtend 是基于 Eclipse 的,而 Kotlin 是基于 IntelliJ 的,两者都提供无界面构建。能够首先演变到其他 IDE 的语言有可能成为最后的赢家。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值