import Ġbuild . future Kotlin Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġ` maven - publish ` ĊĠĠĠ Ġ` java - gradle - plugin ` ĊĠĠĠ Ġid (" com . gradle . plugin - publish ") Ġversion Ġ" 0 . 9 . 7 " Ċ } Ċ Ċ apply < plugins . G sk Module >() Ċ Ċ base Ġ{ ĊĠĠĠ Ġarch ives Base Name Ġ= Ġ" gradle - kotlin - dsl - plugins " Ċ } Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġcompile Only ( gradle Kotlin Dsl ()) ĊĊĠĠĠ Ġcompile ( future Kotlin (" stdlib ")) ĊĠĠĠ Ġcompile ( future Kotlin (" gradle - plugin ")) ĊĠĠĠ Ġcompile ( future Kotlin (" sam - with - receiver ")) ĊĊĠĠĠ Ġtest Implementation ( project (": test - fixtures ")) Ċ } ĊĊ Ċ // Ġ--- ĠPlugins Ġdeclaration Ġ-------------------------------- -------------- Ċ Ċ data Ġclass ĠGradle Plugin ( val ĠdisplayName : ĠString , Ġval Ġid : ĠString , Ġval Ġimplementation Class : ĠString ) Ċ Ċ val Ġplugins Ġ= ĠlistOf ( ĊĠĠĠ ĠGradle Plugin ( ĊĠĠĠĠĠĠĠ Ġ" Embedded ĠKotlin ĠGradle ĠPlugin ", ĊĠĠĠĠĠĠĠ Ġ" org . gradle . kotlin . embedded - kotlin ", ĊĠĠĠĠĠĠĠ Ġ" org . gradle . kotlin . dsl . plugins . embedded . Embedded Kotlin Plugin "), ĊĠĠĠ ĠGradle Plugin ( ĊĠĠĠĠĠĠĠ Ġ" Gradle ĠKotlin ĠDSL ĠPlugin ", ĊĠĠĠĠĠĠĠ Ġ" org . gradle . kotlin . kotlin - dsl ", ĊĠĠĠĠĠĠĠ Ġ" org . gradle . kotlin . dsl . plugins . dsl . Kotlin Dsl Plugin ")) Ċ Ċ plugins . forEach Ġ{ Ġplugin Ġ-> ĊĊĠĠĠ Ġgradle Plugin Ġ{ ĊĠĠĠĠĠĠĠ Ġ( plugins ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugin . id Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġplugin . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Class Ġ= Ġplugin . implementation Class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġplugin Bundle Ġ{ ĊĠĠĠĠĠĠĠ Ġtags Ġ= ĠlistOf (" Kotlin ", Ġ" DSL ") ĊĠĠĠĠĠĠĠ Ġwebsite Ġ= Ġ" https :// github . com / gradle / kotlin - dsl " ĊĠĠĠĠĠĠĠ Ġv cs Url Ġ= Ġ" https :// github . com / gradle / kotlin - dsl " ĊĠĠĠĠĠĠĠ Ġmaven Coordinates . artifactId Ġ= Ġbase . archives Base Name ĊĠĠĠĠĠĠĠ Ġ( plugins ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugin . id Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġplugin . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdisplayName Ġ= Ġplugin . displayName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġplugin . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ publishing Ġ{ ĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġmaven ( url Ġ= Ġ" build / repository ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġcustom Installation Ġby Ġroot Project . tasks Ċ tasks Ġ{ ĊĊĠĠĠ Ġval Ġpublish Plugins To Test Repository Ġby Ġcreating Ġ{ ĊĠĠĠĠĠĠĠ Ġdepends On (" publish Plugin Maven Publication To Test Repository ") ĊĠĠĠĠĠĠĠ Ġdepends On ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugins . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" publish ${ it . id . capitalize ()} Plugin Marker Maven Publication To Test Repository " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġprocess Test Resources : ĠProcess Resources Ġby Ġgetting ĊĊĠĠĠ Ġval Ġwrite Test Properties Ġby Ġcreating ( Write Properties :: class ) Ġ{ ĊĠĠĠĠĠĠĠ ĠoutputFile Ġ= ĠFile ( process Test Resources . destination Dir , Ġ" test . properties ") ĊĠĠĠĠĠĠĠ Ġproperty (" version ", Ġversion ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprocess Test Resources . depends On ( write Test Properties ) ĊĊĠĠĠ Ġ" test " Ġ{ ĊĠĠĠĠĠĠĠ Ġdepends On ( custom Installation ) ĊĠĠĠĠĠĠĠ Ġdepends On ( publish Plugins To Test Repository ) ĊĠĠĠ Ġ} Ċ } Ċ