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
440
"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
680
"Convert Java File to Kotlin File"の甘い罠
ukaznil
0
1.3k
Swiftは""" """のか?
ukaznil
0
950
Other Decks in Programming
See All in Programming
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
4
2k
Catch Up: Go Style Guide Update
andpad
0
220
XP, Testing and ninja testing ZOZ5
m_seki
3
620
デミカツ切り抜きで面倒くさいことはPythonにやらせよう
aokswork3
0
230
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
yordgenome03
1
120
CSC305 Lecture 03
javiergs
PRO
0
240
PHPに関数型の魂を宿す〜PHP 8.5 で実現する堅牢なコードとは〜 #phpcon_hiroshima / phpcon-hiroshima-2025
shogogg
1
140
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
170
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
710
バッチ処理を「状態の記録」から「事実の記録」へ
panda728
PRO
0
150
CSC305 Lecture 05
javiergs
PRO
0
210
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
980
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Rails Girls Zürich Keynote
gr2m
95
14k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Become a Pro
speakerdeck
PRO
29
5.5k
GitHub's CSS Performance
jonrohan
1032
470k
Navigating Team Friction
lara
190
15k
Thoughts on Productivity
jonyablonski
70
4.9k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
590
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 !!