使用 Gradle 打包 Kotlin & java 项目
我们在 idea 中使用 gradle 创建出来的 kotlin & java 项目一般是这样的:
这里的 main/kotlin
并没有加入打包,所以我们需要通过 sourceSets
将 kotlin 目录下的文件加入编译。
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
下面我们要指定 main 方法所在的 class。
jar {
manifest {
attributes 'Main-Class': 'top.mcwebsite.kotlin.demo.Main'
}
}
这里值得注意的一点是 Kotlin 文件在编译后生成的 Class 文件并不会和原始的 Kotlin 文件的名称相同,一般会添加 Kt 后缀,如果我们的文件名称的首字母是小写的,那么生成后的首字母可能会变为大写。当然我们也可以通过 @file:JvmName("MainCls")
这种方式指定最终生成的 Class 文件的名称。
但是这样打出来的 Jar 包中是没有包含我们添加的依赖的包的。需要我们将这些依赖添加到打入的 jar 包中,如下:
jar {
manifest {
attributes 'Main-Class': 'top.mcwebsite.kotlin.demo.MainCls'
}
from(configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it)})
}
这里使用了 runtimeClasspath
这样会将我们的运行时所需的 jar 包添加入 Jar 包中。
这里就可以使用 Gradle 的 build 来构建 Jar 包了。