Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
"Gradle meets Kotlin"ってどんな感じ?
Search
ukaznil
November 22, 2017
Programming
3
390
"Gradle meets Kotlin"ってどんな感じ?
どこでもKotlin #4の資料です。
https://m3-engineer.connpass.com/event/70561/
ukaznil
November 22, 2017
Tweet
Share
More Decks by ukaznil
See All by ukaznil
「Flutterってなんなん」と思って1週間経った
ukaznil
1
570
"Convert Java File to Kotlin File"の甘い罠
ukaznil
0
1.1k
Swiftは""" """のか?
ukaznil
0
870
Other Decks in Programming
See All in Programming
PHPはいつから死んでいるかの調査
chiroruxx
1
400
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
43
19k
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
360
ゆるい個人開発のススメ
kuroppe1819
10
990
Ruby GitHub Packages
bkuhlmann
0
630
SwiftUIで使いやすいToastの作り方 / How to build a Toast system which is easy to use in SwiftUI
lovee
3
140
Apache Hive 4 on Treasure Data
ryukobayashi
0
170
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
200
Ruby Function Composition
bkuhlmann
1
330
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
190
雑に思考を整理する技術と効能
konifar
58
29k
VSCodeでのDatabricks開発もお勧めしたい/I would also recommend Databricks development with VSCode.
kazumain
0
250
Featured
See All Featured
Writing Fast Ruby
sferik
621
60k
Bash Introduction
62gerente
604
210k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
YesSQL, Process and Tooling at Scale
rocio
164
13k
Automating Front-end Workflow
addyosmani
1356
200k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
21
1.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
37
2.5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
BBQ
matthewcrist
80
8.8k
Designing Experiences People Love
moore
136
23k
Statistics for Hackers
jakevdp
789
220k
Transcript
"Gradle meets Kotlin" ͬͯͲΜͳײ͡ʁ 2017/11/22 Wed. Ͳ͜ͰKotlin #4 @ukaznil :
Tatsuya KONISHI http://ukaznil.com/
Gradle is ... • JVMܥͷϏϧυπʔϧ • AntɼMavenɼsbtͱ͔ͱಉ͡ • GroovyϕʔεͷDSLͰهड़ •
GradleͰͰ͖Δ͜ͱ • ϏϧυͰ͖·͢ (SBEMFͰ,PUMJOαϙʔτ ʢ!ʣ@ • Ϗϧυʹؔ͢ΔϩδοΫΛΊΔ • ಠࣗtaskͷ࣮ɼґଘؔʢલޙؔʣͷ੍ޚ • ࣾϦϙδτϦͷೝূ
None
͔͠GroovyͰ͋Δɻ ʮϏϧυ͍͚ͨͩ͠ͳͷʹʯ
ຊൃදͷૂ͍ • ʮGradleΑ͘Θ͔ΒΜʯΛ১͍ͨ͠ • GroovyΛॻ͚ͳ͍ͳΒɼ KotlinΛॻ͚͍͍͡Όͳ͍
it's me !! • Android app dev • झຯͰ6 Kotlinྺ2
• ຊAndroidͷձ ֶੜ෦OB • misc • name: Tatsuya KONISHI • major: machine learning • web site: http://ukaznil.com/ , Twitter: @ukaznil • job: '17 ৽ଔ >> γεςϜ։ൃ / AI • langs: Java(5yrs), Kotlin(2yrs), Scala(1yr) Papyrus
ʲεϥΠυͷݟํʳ ʊGroovy / Kotlinʊ ʹؔ͢Δهड़ίʔυ (SPPWZ ,PUMJO println('hello Groovy.') println("hello
Kotlin.")
build.gradleͷجຊతͳॻ͖ํ buildscript { repositories { maven { url 'https://plugins.gradle.org/m2/' }
} dependencies { classpath 'com.github.jengelman.gradle.plguins.shadow:2.0.1' } } apply plugin: 'java' apply plugin: 'com.github.johnrengelman.shadow' repositories { jcenter() maven { url 'https://your.domain.com/repo/' } } dependencies { compile 'your.group:your.compile-module:x.y.z' runtime 'your.group:your.runtime-module:x.y.z' } shadowJar { manifest { attributes 'Main-Class': 'com.your.domain.Main' } } (SPPWZ
build.gradleͷجຊతͳॻ͖ํ buildscript { repositories { maven { url 'https://plugins.gradle.org/m2/' }
} dependencies { classpath 'com.github.jengelman.gradle.plguins.shadow:2.0.1' } } apply plugin: 'java' apply plugin: 'com.github.johnrengelman.shadow' repositories { jcenter() maven { url 'https://your.domain.com/repo/' } } dependencies { compile 'your.group:your.compile-module:x.y.z' runtime 'your.group:your.runtime-module:x.y.z' } shadowJar { manifest { attributes 'Main-Class': 'com.your.domain.Main' } } (SPPWZ
build.gradleͷجຊతͳॻ͖ํ buildscript { repositories { maven { url 'https://plugins.gradle.org/m2/' }
} dependencies { classpath 'com.github.jengelman.gradle.plguins.shadow:2.0.1' } } apply plugin: 'java' apply plugin: 'com.github.johnrengelman.shadow' repositories { jcenter() maven { url 'https://your.domain.com/repo/' } } dependencies { compile 'your.group:your.compile-module:x.y.z' runtime 'your.group:your.runtime-module:x.y.z' } shadowJar { manifest { attributes 'Main-Class': 'com.your.domain.Main' } } (SPPWZ
ʢ͓·͚ʣϓϥάΠϯͰڞ༗ buildscript { repositories { maven { url 'https:// plugins.gradle.org/m2/'
} } dependencies { classpath 'your.plugin:1.0' } } apply plugin: 'java' apply plugin: 'your.plugin' repositories { jcenter() } dependencies { compile 'your.group:your.compile- module:x.y.z' runtime 'your.group:your.runtime- module:x.y.z' } class MyP implements Plugin<Project> { @Override void apply(Project project) { // Private repository project.allprojects { p -> p.repositories { maven { url 'https://hoge.com/' credentials { username = 'taro' password = 'kotlin' } } } } // Original task project.task('unhappy-task') { description 'aiueo' dependsOn project.jar } << { throw new GradleException('> <') } } } (SPPWZ
ʢ͓·͚ʣϓϥάΠϯͰڞ༗ buildscript { repositories { maven { url 'https:// plugins.gradle.org/m2/'
} } dependencies { classpath 'your.plugin:1.0' } } apply plugin: 'java' apply plugin: 'your.plugin' repositories { jcenter() } dependencies { compile 'your.group:your.compile- module:x.y.z' runtime 'your.group:your.runtime- module:x.y.z' } class MyP implements Plugin<Project> { @Override void apply(Project project) { // Private repository project.allprojects { p -> p.repositories { maven { url 'https://hoge.com/' credentials { username = 'taro' password = 'kotlin' } } } } // Original task project.task('unhappy-task') { description 'aiueo' dependsOn project.jar } << { throw new GradleException('> <') } } } (SPPWZ
GradleͰKotlin • ϓϥάΠϯͷద༻ • λεΫͷએݴ • .propertiesϑΝΠϧͷม • ɹ •
ɹ
ϓϥάΠϯͷద༻ plugins { id 'java' id 'org.jetbrains.kotlin.jvm' version '1.1.60' }
plugins { id("java") //id("org.jetbrains.kotlin.jvm") version "1.1.60" kotlin("jvm") version "1.1.60" } • 'java', 'kotlin'ϓϥάΠϯͰఆٛ͞Ε͍ͯΔλ εΫ͕͑ΔΑ͏ʹͳΔ dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$version_kotlin" } (SPPWZ ,PUMJO
ϓϥάΠϯͷద༻ plugins { id 'java' id 'org.jetbrains.kotlin.jvm' version '1.1.60' }
plugins { id("java") //id("org.jetbrains.kotlin.jvm") version "1.1.60" kotlin("jvm") version "1.1.60" } • 'java', 'kotlin'ϓϥάΠϯͰఆٛ͞Ε͍ͯΔλ εΫ͕͑ΔΑ͏ʹͳΔ dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$version_kotlin" } (SPPWZ ,PUMJO
λεΫͷఆٛ task myGroovyTask { description = 'my task' desctiption 'my
task' } doLast { //'<< {}' is deprecated println("with groovy") } task("myKotlinTask") { description = "my task" }.doLast { println("with kotlin") } (SPPWZ ,PUMJO
λεΫͷఆٛ task myGroovyTask { description = 'my task' desctiption 'my
task' } doLast { //'<< {}' is deprecated println("with groovy") } task("myKotlinTask") { description = "my task" }.doLast { println("with kotlin") } • Groovy / KotlinͷϓϩύςΟΞΫηεͷҧ͍ description = 'desc' || setDescription('desc') description 'desc' || description('desc') description = "desc" || setDescription("desc") (SPPWZ ,PUMJO
.propertiesϑΝΠϧͷม dependencies { compile "org.jetbrains.kotlin:kotlin- stdlib:$vKotlin" } val vKotlin by
project val vKotlin: String by extra val verkotlin = extra["vKotlin"] dependencies { compile "org.jetbrains.kotlin:kotlin- stdlib:$vKotlin" } vKotlin=1.1.60 (SPPWZ ,PUMJO HSBEMFQSPQFSUJFT
.propertiesϑΝΠϧͷม dependencies { compile "org.jetbrains.kotlin:kotlin- stdlib:$vKotlin" } val vKotlin by
project val vKotlin: String by extra val verkotlin = extra["vKotlin"] dependencies { compile "org.jetbrains.kotlin:kotlin- stdlib:$vKotlin" } vKotlin=1.1.60 (SPPWZ ,PUMJO HSBEMFQSPQFSUJFT ,PUMJO͢͜͠໘ɻɻɻ
GradleͰKotlin • ϓϥάΠϯͷద༻ • λεΫͷએݴ • .propertiesϑΝΠϧͷม • ɹ •
ɹ
GradleͰKotlin • ϓϥάΠϯͷద༻ • λεΫͷએݴ • .propertiesϑΝΠϧͷม • ɹ •
ɹ
GradleͰKotlin • ϓϥάΠϯͷద༻ • λεΫͷએݴ • .propertiesϑΝΠϧͷม • IDE͕ෆ •
ɹ
IDE͕@Groovy (SPPWZ ͳΜͯஸೡͳΤϥʔϝοηʔδʜʜοʂ
IDE͕ෆ@Kotlin ,PUMJO 0I
IDE͕ෆ@Kotlin(͓͔ΘΓ) ,PUMJO 0IʢBHBJOʣ
GradleͰKotlin • ϓϥάΠϯͷద༻ • λεΫͷએݴ • .propertiesϑΝΠϧͷม • IDE͕ෆ •
ɹ
GradleͰKotlin • ϓϥάΠϯͷద༻ • λεΫͷએݴ • .propertiesϑΝΠϧͷม • IDE͕ෆ •
IDE͕
IDE͕ෆ@Groovy (SPPWZ NBQͷLFZΛ֮͑ͳ͍ͱ͍͚ͳ͍ͷπϥ͍ɻɻɻ
IDE͕@Kotlin ,PUMJO FYDMVEF͓͚֮͑͑ͯ͞Կͱ͔ͳΔʂ UIBOLTUP֦ுؔ
ຊൃදͷ·ͱΊ • ʮGradleΑ͘Θ͔ΒΜʯΛ১͍ͨ͠ 㱺 buildπʔϧͷཧղʮٸ͕ճΕʯ • GroovyΛॻ͚ͳ͍ͳΒɼ KotlinΛॻ͚͍͍͡Όͳ͍ 㱺 λεΫͰΰϦΰϦ͢ΔͳΒԸܙେʁ
"Gradle meets Kotlin" ͬͯͲΜͳײ͡ʁ That's all of 2017/11/22 Wed. Ͳ͜ͰKotlin
#4 @ukaznil : Tatsuya KONISHI http://ukaznil.com/
Thank you, Kotliners !!