Ċ Ċ import Ġlink . kotlin . scripts . Article Ċ import Ġlink . kotlin . scripts . model . Language Codes . EN Ċ import Ġlink . kotlin . scripts . Link Type . article Ċ import Ġjava . time . LocalDate Ċ Ċ // Ġlanguage = Markdown Ċ val Ġbody Ġ= Ġ""" Ċ Gradle ĠScript ĠKotlin Ġ 0 . 9 . 0 ĠRelease ĠNotes Ċ ================================ ======== Ċ Ċ Gradle ĠScript ĠKotlin Ġv 0 . 9 . 0 Ġis Ġanother Ġmajor Ġstep Ġforward Ġin Ġus ability , Ġbringing Ġimprovements Ġto Ġthe ĠDSL , ĠIntelliJ Ġexperience , Ġperformance , Ġand Ġfinally Ġautomatic Ġdetection Ġof ĠKotlin Ġbased Ġbuilds . Ċ Ċ v 0 . 9 . 0 Ġis Ġexpected Ġto Ġbe Ġincluded Ġin Ġthe Ġupcoming ĠGradle Ġ 4 . 0 ĠRC 1 . Ċ Ċ The Ġfeatures Ġin Ġthis Ġrelease Ġare Ġalso Ġavailable Ġfor Ġimmediate Ġuse Ġwithin Ġthe Ġlatest ĠGradle ĠScript ĠKotlin Ġdistribution Ġsnapshot . ĠTo Ġuse Ġit , Ġupgrade Ġyour ĠGradle Ġwrapper Ġin Ġthe Ġfollowing Ġfashion : ĊĊĠĠĠ Ġ${ '$ '} Ġcd Ġ${ '$ '} YOUR _ PROJECT _ ROOT ĊĠĠĠ Ġ${ '$ '} Ġgradle Ġwrapper Ġ-- gradle - distribution - url Ġhttps :// repo . gradle . org / gradle / dist - snapshots / gradle - script - kotlin - 4 . 0 - 2 0 1 7 0 5 1 8 0 4 2 6 2 7 + 0 0 0 0 - all . zip Ċ Ċ Updates Ġsince Ġv 0 . 8 . 0 Ċ -------------------- ĊĊ Ġ* Ġ** Automatic Ġdetection Ġof ĠKotlin Ġbased Ġbuilds ** Ġ([# 3 7 ][ 1 0 0 3 7 ], Ġ[# 8 0 ][ 1 0 0 8 0 ]). ĠAfter Ġa Ġlittle Ġmore Ġthan Ġan Ġyear Ġsince Ġthe Ġissue Ġwas Ġfirst Ġadded Ġto Ġour Ġboard Ġthis Ġhuge Ġus ability Ġimprovement Ġhas Ġfinally Ġl anded ! ĊĊĠĠĠ ĠNo Ġmore Ġ` root Project . build FileName Ġ= Ġ' build . gradle . k ts '` Ġboilerplate Ġor Ġ` settings . gradle ` Ġfile Ġrequired Ġin Ġorder Ġto Ġenable ĠKotlin Ġbuild Ġscript ! Ġ: tada : ĊĊ Ġ* Ġ** Default Ġimports Ġfor Ġthe Ġwhole ĠGradle ĠAPI ** Ġ([# 2 1 5 ][ 1 0 0 2 1 5 ], Ġ[# 3 4 7 ][ 1 0 0 3 4 7 ]). ĠTo Ġmake Ġbuild Ġscripts Ġmore Ġconcise , Ġthe Ġset Ġof Ġdefault Ġimports Ġnow Ġincludes Ġthe Ġwhole ĠGradle ĠAPI Ġas Ġdocumented Ġin Ġthe Ġ[ Default Ġimports Ġsection Ġof Ġthe ĠGradle ĠUser ĠGuide ]( https :// docs . gradle . org / current / user guide / writing _ build _ scripts . html # script - default - imports ). ĊĊ Ġ* Ġ** Impro ved ĠGradle ĠAPI Ġwith Ġtype Ġsafe Ġset ters ** Ġ([# 3 4 1 ][ 1 0 0 3 4 1 ]). ĠKotlin Ġrecogn izes Ġmutable ĠJava Bean Ġproperties Ġonly Ġwhen Ġboth Ġthe Ġgetter Ġand Ġat Ġleast Ġone Ġsetter Ġagree Ġon Ġthe Ġproperty Ġtype . ĊĊĠĠĠĠ ĠMore Ġthan Ġ 5 0 Ġstrongly Ġtyped Ġset ters Ġhave Ġbeen Ġrecently Ġadded Ġto Ġthe ĠGradle ĠAPI Ġenabling Ġbuild Ġscripts Ġto Ġmigrate Ġfrom Ġinvocation Ġheavy Ġconfiguration Ġsyntax Ġsuch Ġas : ĊĊĠĠĠ Ġ``` kotlin ĊĠĠĠ Ġval Ġsome Build Ġby Ġtasks . creating ( Gradle Build :: class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Dir ( file (" some / path ")) ĠĠĠĠĠ Ġ// ĠNOT ĠRE CO GN IZED ĠAS ĠPROPERTY ĠBE CA USE ĠOF ĠUN TYPE D ĠSET TER ĊĠĠĠĠĠĠĠ Ġset Tasks ( listOf (" foo ", Ġ" bar ")) Ġ// ĠNOT ĠRE CO GN IZED ĠAS ĠPROPERTY ĠBE CA USE ĠOF ĠUN TYPE D ĠSET TER ĊĠĠĠ Ġ} ĊĠĠĠ Ġ``` ĊĊĠĠĠ Ġto Ġthe Ġmore Ġdecl arative : ĊĊĠĠĠ Ġ``` kotlin ĊĠĠĠ Ġval Ġsome Build Ġby Ġtasks . creating ( Gradle Build :: class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdir Ġ= Ġfile (" some / path ") ĊĠĠĠĠĠĠĠ Ġtasks Ġ= ĠlistOf (" foo ", Ġ" bar ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġ``` ĊĊ Ġ* Ġ** Impro ved Ġproject Ġextension Ġaccessors Ġwith Ġproperties ** Ġ([# 3 3 0 ][ 1 0 0 3 3 0 ]). ĠSo Ġone Ġcan Ġnow Ġwrite Ġ` java . source Sets ` Ġinstead Ġof Ġ` java (). source Sets ` Ġas Ġin Ġ` 0 . 8 . 0 `. ĊĊ Ġ* Ġ** API Ġdocumentation ** Ġ([# 2 0 9 ][ 1 0 0 2 0 9 ]). ĠA Ġfirst Ġcut Ġof Ġthis Ġimportant Ġpiece Ġof Ġdocumentation , Ġgenerated Ġusing Ġ[ D ok ka ]( https :// kotlin lang . org / docs / reference / kotlin - doc . html ), Ġis Ġnow Ġavailable Ġat Ġhttps :// gradle . github . io / gradle - script - kotlin - docs / api /. ĊĊ Ġ* Ġ** Int elli J Ġimprovements ** ĊĊĠĠ Ġ* Ġ** Classpath Ġcomputation Ġis Ġnow Ġasynchronous ** Ġ([# 2 4 9 ][ 1 0 0 2 4 9 ]). ĠAnd Ġshould Ġno Ġlonger Ġblock Ġthe ĠUI Ġ( pending Ġa Ġfix Ġto Ġ[ this ĠIntelliJ Ġissue ]( https :// yout rack . jetbrains . com / issue / KT - 1 7 7 7 1 )) ĊĊĠĠ Ġ* Ġ** Type - safe Ġaccessors Ġare Ġcorrectly Ġincluded Ġin Ġthe Ġclasspath Ġgiven Ġto ĠIntelliJ ** Ġ([# 3 4 0 ][ 1 0 0 3 4 0 ]). ĠUp on Ġchanges Ġto Ġthe Ġ` plugins ` Ġblock Ġ( pending Ġa Ġfix Ġto Ġ[ this ĠIntelliJ Ġissue ]( https :// yout rack . jetbrains . com / issue / KT - 1 7 7 7 0 )) ĊĊĠĠ Ġ* Ġ** Source Ġcode Ġnavigation Ġnow Ġworks Ġfor Ġeverything ĠGradle ** Ġ([# 2 8 1 ][ 1 0 0 2 8 1 ]). ĊĊĠĠĠĠ Ġ![ source - code - navigation ]( https :// cloud . githubusercontent . com / assets / 5 1 6 8 9 / 2 5 7 7 2 9 9 4 / 1 fb 0 2 b 2 a - 3 2 4 c - 1 1 e 7 - 9 1 aa - 8 c 7 e 5 1 c 8 6 d 8 6 . gif ) ĊĊĠĠ Ġ* Ġ** Source Ġcode Ġnavigation Ġto Ġsources Ġof Ġincluded ĠKotlin Ġlibraries ** Ġ([# 9 6 ][ 1 0 0 9 6 ]). ĠAs Ġlong Ġas Ġthere 's Ġat Ġleast Ġone Ġ` build script ` Ġrepository Ġconfigured Ġthat Ġcan Ġresolve Ġthe ĠKotlin Ġsource Ġartifacts . ĊĊ Ġ* Ġ** Mis cellaneous ** ĊĊĠĠ Ġ* Ġ** Pol ished ĠAndroid ĠSample ** Ġ([# 3 5 1 ][ 1 0 0 3 5 1 ]). ĠWith Ġall Ġthe Ġimprovements Ġin Ġthis Ġrelease , Ġour Ġ[ hello - android Ġsample ]( https :// github . com / gradle / gradle - script - kotlin / tree / master / samples / hello - android ) Ġis Ġnow Ġboilerplate Ġfree : ĊĊĠĠĠĠĠĠĠ Ġ``` kotlin ĊĠĠĠĠĠĠĠ Ġbuild script Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath (" com . android . tools . build : gradle : 2 . 3 . 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath ( kotlin Module (" gradle - plugin ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj center () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugin (" com . android . application ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugin (" kotlin - android ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġandroid Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Tools Version (" 2 5 . 0 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Sdk Version ( 2 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Config Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Sdk Version ( 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Sdk Version ( 2 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Id Ġ= Ġ" com . example . kot ling rad le " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Code Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Name Ġ= Ġ" 1 . 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Types Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ByName (" release ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Min ify Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpro guard Files (" pro guard - rules . pro ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile (" com . android . support : appcompat - v 7 : 2 3 . 4 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile (" com . android . support . constraint : constraint - layout : 1 . 0 . 0 - alpha 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile ( kotlin Module (" stdlib ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj center () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ``` ĊĊĠĠĠĠĠĠĠ ĠAnd Ġit Ġworks Ġwith Ġthe Ġlatest ĠAndroid ĠStudio Ġ( 2 . 3 . 2 ). ĊĊĠĠ Ġ* Ġ** Gradle Ġinitialization Ġoverhead Ġremoved ** Ġ([# 3 2 0 ][ 1 0 0 3 2 0 ]). ĠThe Ġimplementation Ġof Ġtype - safe Ġaccessors Ġin Ġ` 0 . 8 . 0 ` Ġadded Ġsome Ġund ue Ġoverhead Ġto Ġproject Ġconfiguration Ġeven Ġwhen Ġthere Ġwas Ġno ĠKotlin Ġbuild Ġscript Ġinvolved . ĠThis Ġhas Ġbeen Ġfixed . ĊĊĠĠ Ġ* Ġ** Id iom atic Ġsupport Ġfor ĠGradle 's Ġ` Property State < T >` Ġand Ġ` Configurable File Collection ` Ġproperties ** Ġ([# 3 4 4 ][ 1 0 0 3 4 4 ]). ĠV ia ĠKotlin Ġdeleg ated Ġproperties : ĊĊĠĠĠĠĠĠĠ Ġ``` kotlin ĊĠĠĠĠĠĠĠ Ġopen Ġclass ĠG reeting Plugin Extension ( project : ĠProject ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDeclare Ġa Ġ` Property State < String >` Ġbacking Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage State Ġ= Ġproject . property < String >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEx pose Ġ` message State ` Ġas Ġthe Ġ` message ` Ġproperty Ġwhose Ġtype Ġis Ġinferred Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmessage Ġby Ġmessage State ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCan Ġalso Ġbe Ġexposed Ġas Ġ` Provider < String >` Ġfor Ġadditional Ġfunctionality ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Provider : ĠProvider < String > Ġget () Ġ= Ġmessage State ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ` output Files ` Ġproperty Ġtype Ġis Ġinferred Ġas Ġ` Configurable File Collection ` ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwith Ġthe Ġfollowing Ġbehaviour : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ- Ġgetting Ġwill Ġalways Ġreturn Ġthe Ġoriginal Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ- Ġsetting Ġwill Ġ` set From ` Ġthe Ġsource ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġoutput Files Ġby Ġproject . files () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ``` ĊĊĠĠĠĠĠĠĠ ĠCheck Ġout Ġthe Ġ[ provider - properties Ġsample ](/ gradle / gradle - script - kotlin / tree / master / samples / provider - properties ) Ġfor Ġmore Ġinformation . ĊĊĠĠ Ġ* Ġ** Better Ġcaching Ġbehaviour Ġfor Ġtype - safe Ġaccessors ** Ġ([# 3 3 8 ][ 3 3 8 ]). ĊĊ Ġ* Ġ** Bug Ġfixes ** ĊĊĠĠĠ Ġ* Ġ** Setting Ġnon - existent ĠKotlin Ġbuild Ġscript Ġin Ġsettings . gradle Ġno Ġlonger Ġcauses Ġthe Ġbuild Ġto Ġfail ** Ġ([# 3 0 2 ][ 1 0 0 3 0 2 ], Ġ[# 3 3 1 ][ 1 0 0 3 3 1 ]). ĠFollowing Ġstandard ĠGradle Ġbehaviour . ĊĊĠĠĠ Ġ* Ġ** Generated Ġextension Ġaccessor Ġfor Ġthe Ġ` publishing ` Ġextension Ġwill Ġwork Ġas Ġexpected ** Ġ([# 3 2 7 ][ 1 0 0 3 2 7 ], Ġ[# 3 2 8 ][ 1 0 0 3 2 8 ]). ĠAnd Ġdefer Ġconfiguration Ġuntil Ġnecessary . ĊĊĠĠĠ Ġ* Ġ** Projects Ġwith ĠKotlin Ġbuild Ġscripts Ġin Ġ` build Src ` Ġcan Ġbe Ġedited Ġwith Ġthe Ġcorrect Ġclasspath Ġin ĠIntelliJ ** Ġ([# 3 3 9 ][ 1 0 0 3 3 9 ]). ĠAs Ġbuild Ġscripts Ġwill Ġnow Ġbe Ġexecuted Ġin Ġa Ġbest - eff ort Ġmanner Ġwhen Ġcomputing Ġthe Ġclasspath . ĊĊ Ċ [ 1 0 0 3 7 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 7 Ċ [ 1 0 0 8 0 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 8 0 Ċ [ 1 0 0 2 1 5 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 2 1 5 Ċ [ 1 0 0 3 4 7 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 4 7 Ċ [ 1 0 0 3 4 1 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 4 1 Ċ [ 1 0 0 3 3 0 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 3 0 Ċ [ 1 0 0 2 0 9 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 2 0 9 Ċ [ 1 0 0 2 4 9 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 2 4 9 Ċ [ 1 0 0 3 4 0 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 4 0 Ċ [ 1 0 0 2 8 1 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 2 8 1 Ċ [ 1 0 0 9 6 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 9 6 Ċ [ 1 0 0 3 5 1 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 5 1 Ċ [ 1 0 0 3 2 0 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 2 0 Ċ [ 1 0 0 3 4 4 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 4 4 Ċ [ 1 0 0 3 3 8 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 3 8 Ċ [ 1 0 0 3 0 2 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 0 2 Ċ [ 1 0 0 3 3 1 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 3 1 Ċ [ 1 0 0 3 2 7 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 2 7 Ċ [ 1 0 0 3 2 8 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 2 8 Ċ [ 1 0 0 3 3 9 ]: Ġhttps :// github . com / gradle / gradle - script - kotlin / issues / 3 3 9 Ċ """ Ċ Ċ Article ( ĊĠ Ġtitle Ġ= Ġ" Gradle ĠScript ĠKotlin Ġ 0 . 9 . 0 ĠRelease ĠNotes ", ĊĠ Ġurl Ġ= Ġ" https :// github . com / gradle / gradle - script - kotlin / releases / tag / v 0 . 9 . 0 ", ĊĠ Ġcategories Ġ= ĠlistOf ( ĊĠĠĠ Ġ" Kotlin ", ĊĠĠĠ Ġ" Gradle ĠScript ĠKotlin " ĊĠ Ġ), ĊĠ Ġtype Ġ= Ġarticle , ĊĠ Ġlang Ġ= ĠEN , ĊĠ Ġauthor Ġ= Ġ" Rod rig o ĠB . Ġde ĠO live ira ", ĊĠ Ġdate Ġ= ĠLocalDate . of ( 2 0 1 7 , Ġ 5 , Ġ 1 8 ), ĊĠ Ġbody Ġ= Ġbody Ċ ) Ċ