package Ġcom . squareup . an vil . plugin Ċ Ċ import Ġorg . gradle . api . Gradle Exception Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . plugins . Java Plugin Convention Ċ import Ġorg . jetbrains . kotlin . gradle . internal . K apt 3 Gradle Sub plugin Ċ import Ġorg . jetbrains . kotlin . gradle . tasks . Kotlin Compile Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠIn Ġa Ġmixed ĠKotlin Ġ/ ĠJava Ġsource Ġset Ġthe ĠKotlin Ġcompiler Ġmight Ġcrash Ġwith Ġan Ġerror Ġlike Ġthis : Ċ Ġ* Ċ Ġ* Ġjava . lang . AssertionError : ĠD uplicated ĠJava Class Descriptor Ġa / b / c / Hello Ġreported Ġto ĠIC . Ċ Ġ* Ċ Ġ* ĠThat 's Ġa Ġknown Ġbug : Ġhttps :// yout rack . jetbrains . com / issue / KT - 3 8 5 7 6 Ċ Ġ* Ċ Ġ* ĠThe Ġworkaround Ġfor Ġnow Ġis Ġto Ġset Ġthe Ġkotlin . incremental . use Prec ise Java Tracking Ġflag Ġto Ġfalse Ġfor Ċ Ġ* Ġthese Ġmodule Ġusing Ġthis Ġtask . Ċ Ġ*/ Ċ open Ġclass ĠCheck Mixed Source Set ( ĊĠ Ġprivate Ġval Ġproject : ĠProject , ĊĠ Ġprivate Ġval Ġcompile Task : ĠKotlin Compile Ċ ) Ġ{ ĊĊĠ Ġfun Ġdisable Prec ise Java Tracking IfNeeded () Ġ{ ĊĠĠĠ Ġval Ġsource Files Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠ Ġproject . is Android Project Ġ-> Ġget Source Files Android Project () ĊĠĠĠĠĠ Ġproject . is Kotlin Jvm Project Ġ-> Ġget Source Files Java Project () ĊĠĠĠĠĠ Ġ// ĠConsider ĠKotlin Ġonly Ġproject Ġin Ġthe Ġfuture . ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠGradle Exception (" Only ĠAndroid Ġand ĠJVM Ġmodules Ġare Ġsupported Ġfor Ġnow .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠIf Ġthere Ġis ĠJava Ġfile , Ġthen Ġdisable Ġprecise ĠJava Ġtracking . ĊĠĠĠ Ġval Ġhas Java File Ġ= Ġsource Files . any Ġ{ Ġit . extension Ġ== Ġ" java " Ġ} ĊĊĠĠĠ Ġ// ĠIf ĠK apt Ġis Ġenabled Ġthen Ġit Ġusually Ġgenerates ĠJava Ġcode Ġmaking ĠKotlin Ġcompilation Ġuse Ġa ĊĠĠĠ Ġ// Ġmixed Ġsource Ġset . ĊĠĠĠ Ġval Ġis K apt Applied Ġ= Ġproject . plugins . has Plugin ( K apt 3 Gradle Sub plugin :: class . java ) ĊĊĠĠĠ Ġif Ġ( has Java File Ġ|| Ġis K apt Applied ) Ġ{ ĊĠĠĠĠĠ Ġcompile Task . use Prec ise Java Tracking Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Opt In ( Experimental Std lib Api :: class ) ĊĠ Ġprivate Ġfun Ġget Source Files Android Project (): ĠSequence < File > Ġ{ ĊĠĠĠ Ġreturn Ġproject . android Variants () ĊĠĠĠĠĠĠĠ Ġ. find Variant For Compile Task ( compile Task ) ĊĠĠĠĠĠĠĠ Ġ. source Sets ĊĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . java Directories . as Sequence () Ġ} ĊĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . walk () Ġ} ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isFile Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Source Files Java Project (): ĠSequence < File > Ġ{ ĊĠĠĠ Ġreturn Ġproject . convention . get Plugin ( Java Plugin Convention :: class . java ) ĊĠĠĠĠĠĠĠ Ġ. source Sets ĊĠĠĠĠĠĠĠ Ġ// ĠIgnore Ġ" test ", Ġsimilar Ġto Ġandroid Variants () Ġwe Ġignore Ġunit Ġtests . ĊĠĠĠĠĠĠĠ Ġ. single Ġ{ Ġit . name Ġ== Ġ" main " Ġ} ĊĠĠĠĠĠĠĠ Ġ. all Java ĊĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isFile Ġ} ĊĠ Ġ} Ċ } Ċ