kotlin入门---构建工具(下)
Posted 龙宝宝IT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kotlin入门---构建工具(下)相关的知识,希望对你有一定的参考价值。
接着昨天分享的内容继续为大家分享kotlin入门---构建工具(下)
\#\# 用gradle来构建kotlin项目
程序员通常都会有自己的工作文件夹,在Mac OS下他可以是~/workspace/,而在windows下则很可能是E:\workspace 。执行如下操作(命令为 Linux/Mac Os下的操作,windows可以使用鼠标与图形界面操作)
\#\#\# 初始化项目
1. 进入自己的工作文件夹
```
cd ~/workspace
```
1. 在工作区中创建一个名叫kt的文件夹用来存放学习过程中所有的实例,并进入kt目录
```
mkdir kt
cd kt
```
1. 创建项目文件夹gradle-kt并进入文件夹
```
mkdir gradle-kt
cd gradle-kt
```
2. 使用gradle初始化一个java库项目。gradle非常强大,支持多种语言,既可以构建完整应用也可以打包项目库,因此初始化时需要指定项目类型,本例中使用 --type java-library。\(读者可以自行尝试一下 --type java-application,这样初始化生成的java代码中包含一个App类与一个静态的main函数,可以使用 gradle run来运行这个程序\)
```
gradle init --type java-library
```
1. 项目创建成功,使用ls查看目录结构得到如下结果
```
build.gradle gradlew settings.gradle gradle gradlew.bat src
```
其中 build.gradle 是项目配置文件,gradlew与gradlew.bat分别是linux和windows下的脚本文件(后面会详细说明),settings.gradle是gradle的配置文件,gradle文件夹读者暂时可以忽略,而src文件夹用来存放源码,按照约定由于配置的原则,所有java源码应该在src/main/java文件夹下,如果不是,我们就需要在build.gradle文件中增加srcDirs选项的配置。
\#\#\# 为项目添加对kotlin的支持
1. 要编写kt代码我们就需要在src/main的目录中创建一个kotlin文件夹
```
mkdir src/main/kotlin
```
1. 在kotlin文件夹中创建hello.kt文件并输入
```
fun main\(args: Array<String>\) {
println\("Hello, World!"\)
}
```
1. 暂时不需要默认创建的java文件与测试文件,因此我们先删除java文件夹与test文件夹
```
rm -Rf src/main/java/
rm -Rf src/test/
```
1. 现在可以开始配置gradle构建项目了,编辑build.gradle文件,将文件内容替换成下面这样
```
buildscript {
ext.kotlin_version = '1.1.2-2'
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
repositories {
jcenter()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
```
1. 好了,恭喜你,到这一步,我们可以利用自动构建来编译kotlin
项目了,输入以下命令
```
gradle build
```
此时用ls命令查看,会发现项目中多出一个build文件夹,src文件夹中对应的代码文件会编译到build/class文件夹下,而build/libs文件夹包含了项目运行需要的依赖包,因此要以项目方式运行,我们需要加上classpath
```
kotlin -cp build/libs/gradle-kt.jar HelloKt
```
类名千万不要写错,由hello.kt编译出来的Hello首字母大写,后面还有Kt的K也是大写。
上一章的实验相信大家一定还记得吧,我刚才执行程序使用的是kotlin命令,如果要使用java命令直接运行程序,我们还应该把kotlin的运行时所需的jar包也包含进来。我的kotlin安装在“/usr/local/Cellar/kotlin/1.1.2-2/”因此键入命令
```
java -cp /usr/local/Cellar/kotlin/1.1.2-2/libexec/lib/kotlin-runtime.jar:build/libs/gradle-kt.jar HelloKt
```
Classpath有多个参数中间使用冒号隔开,当然为了方便,你也可以在环境变量中配置KOTLIN\_HOME到你的安装路径,这样使用时就可以使用$KOTLIN\_HOME代替长长的路径了。
\#\#\# 构建时将运行时环境打包
我们知道java是跨平台的,这是一个非常有用的特性,我们希望把打包的应用程序拷贝到任何一台装有java的计算机上都能正常运行,那么我们就应该像第一章的打包实验所做的一样,将kt的运行时一起打包,这样就不用费劲的在每一台机器上都安装kotlin编译器了。
只需要修改修改build.gradle文件的buildscript部分,在ext.kotlin\_version 下面增加一个属性ext.shadow\_version,在classpath后用逗号分隔,增加一个依赖,看上去应该是这个样子的
buildscript {
ext.kotlin_version = '1.1.2-2'
ext.shadow_version = '1.2.3'
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version",
"com.github.jengelman.gradle.plugins:shadow:$shadow_version"
}
//省略……
apply plugin: 'kotlin'
apply plugin: 'com.github.johnrengelman.shadow'
//省略……
```
这样一来,就可以使用以下命令来重新构建项目,并使用java命令直接运行项目了
```
gradle shadowJar
java -cp build/libs/gradle-kt-all.jar HelloKt
```
\#\#\# 使用gradle自动构建并运行项目
我们已经使用Gradle帮助我们下载和管理依赖,自动编译项目打包资源,但是每次运行项目敲java命令和长长的classpath依然不太方便,如果大家有尝试过本章开头提到的 gradle init --type java-application方法,就会发现生成的build.gradle中启用了插件'application',并且设置了项目的入口文件 mainClassName,为我们的项目也增加这两项配置,那么我们就可以使用 gradle run来快速构建并运行我们的程序
```
apply plugin: 'application'
mainClassName = "HelloKt"
```
现在大家可以试着直接 gradle run了,如果我们为gradle命令加上-t参数
```
gradle -t run
```
那么gradle将会监听我们的项目变化,当我修改hello.kt的源码并保存时,gradle将会立刻重新构建项目并运行,直到我输入ctrl+c终止gradle,这在实际开发中非常有用。
传授最新IT技术
帮你应对变化的世界
以上是关于kotlin入门---构建工具(下)的主要内容,如果未能解决你的问题,请参考以下文章