2016/08/19 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlinが〜Gradleに〜出会った〜の話

Kotlinが〜Gradleに〜出会った〜の話

https://gradle.org/press-release/gradle-elevates-build-first-class-programming-kotlin-language/より引用

Gradle 3.0が出ました。


Gradle Release Notes



Kotlinがbuildスクリプトで使えるようになったらしいです。ウケる。


「使ってみろ」と天の声が聴こえた気がするので、使ってみましょう。



ちなみに、お前ら付き合いたてのカップルかよって感じのブログタイトルがこちら2つです。


Gradle Meets Kotlin - Kotlin Blog
Kotlin Meets Gradle - Gradle







Gradle wrapper のバージョン更新についてのメモを参考にして、

以下のように書き換える。
・ gradle-wrapper.properties

#Fri Aug 19 21:14:38 JST 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.0-bin.zip



ここにgradleの色んなversionがアーカイブされているわけですね。
http://services.gradle.org/distributions/




で、gradle wrapperでversionを指定してあげる。
そして始まるダウンロード・フェスティバル。

./gradlew wrapper --gradle-version=3.0
Downloading https://services.gradle.org/distributions/gradle-3.0-bin.zip
......................................................................


とり込み完了したっぽいので一応version確認。

./gradlew wrapper –gradle-version=3.0 –version


=======================================
Gradle 3.0
=======================================
Build time:   2016-08-15 13:15:01 UTC 
Revision:     ad76ba00f59ecb287bd3c037bd25fc3df13ca558 
Groovy:       2.4.7 
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015 
JVM:          1.8.0_92 (Oracle Corporation 25.92-b14) 
OS:           Mac OS X 10.11.2 x86_64 


おっけー。





ちょっとためしに使ってみます。
build.gradleをbuild.gradle.ktsにしても動くはず。



このGradleの人の動画とか見つつ。
Gradle Goes Kotlin by Hans Dockter



gradleのGitHubリポジトリとか見つつ。
gradle/gradle-script-kotlin



build.gradle.ktsはこんな感じにしました(しかし、名前がダサい)。


import org.gradle.api.plugins.*
import org.gradle.api.tasks.wrapper.*
import org.gradle.script.lang.kotlin.*

group = "gradle-meets-kotlin"
version = "1.0.0-SNAPSHOT"
val kotlinVersion by extra.properties

apply {
    plugin("application")
}

configure<ApplicationPluginConvention> {
    mainClassName = "samples.HelloWorld"
    applicationName = "gradle-meets-kotlin"
}

repositories {
    jcenter()
    mavenCentral()
}

dependencies {
    "testCompile"("junit:junit:4.12")
}



そして、よくあるエントリポイントを用意しますね。

package samples;

/**
 * Created by yy_yank on 2016/08/19.
 */
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello Gradle Kotlin");
    }
}



んで、./gradlew wrapper –gradle-version=3.0 runしてみるが何故かうまくいかない。なんで???




お、settings.gradleが重要ぽい。

rootProject.name = 'gradle-meets-kotlin'
rootProject.buildFileName = 'build.gradle.kts'


再度実行。



./gradlew wrapper --gradle-version=3.0 run
:wrapper UP-TO-DATE
:compileJava
:processResources UP-TO-DATE
:classes
:run
Hello Gradle Kotlin

BUILD SUCCESSFUL

Total time: 4.437 secs

おー、やったー!動きました!




よく分からないけど、まぁ動く。


現状IntelliJ IDEA CEでは補完とか
シンタックスハイライトが効いてない気がするんです(Ultimate Edition買えってことかな)。



関数とかクラスへのジャンプも出来なかったので、
もう少し遊ぼうかみたいなのがなかなかやりにくい。



しかし、Gradleの人のデモを見る限り、
コード補完とかちゃんと効いてたのでそうなっていくのでしょう!!



そして多分IDEでgradle runなりgradle testする前に
静的な型チェックが出来るということを推して行きたいんでしょうね。
IDEがコンパイルエラーになって赤くしてくれるので早めに気づけるし、
割とGroovyに近いDSLは書けますよ、みたいな。





面白いこと出来そうだなぁっと思ったのは(引用ですが)こんなのが出来るのとか。

dependencies {
    compile(kotlin("stdlib"))
    compile(kotlin("reflect"))
    compile(kotlin("compiler-embeddable"))
}

fun kotlin(module: String) = "org.jetbrains.kotlin:kotlin-$module:$kotlinVersion"


こんなタスクとかですかね。

tasks.withType<Jar> {
    from(the<JavaPluginConvention>().sourceSets.getByName("main").allSource)
    manifest.attributes.apply {
        put("Implementation-Title", "Gradle Script Kotlin")
        put("Implementation-Version", version)
    }
}


したがって、単なる依存管理とかビルドから少し離れて
タスクランナーとしてちょこっとやりたいとか言う時は便利なのかもしれませんね。
Groovyな人は多分そのままbuild.gradleで良いんだと思いますがw




コードはこちら。

https://github.com/yyYank/gradle-meets-kotlin




という感じでした!!以上!!!







これや!!!


「Tools>Kotlin>Configure Kotlin Plugin Updates」
もしくはsearch everywhere で「Kotlin Plugin Updates」を探すと







Early Access Preview 1.1をプルダウンで選択し、Check for updates nowを押すと、
インストールボタンが表示されるので、インストールします。


これでbuilde.gradle.ktsのコード補完が効くようになる!はず!
で、どうやらUltimate Editionではコード補完は効くのですが、Community Editionは未対応っぽいです。
ただ、普通に設定すればgradle runとかは可能ですのであしからず!!





0 件のコメント:

コメントを投稿