Как я могу поручить gradle отслеживать «local.properties», чтобы узнать, когда требуется «Синхронизация Gradle»?

#gradle

#gradle

Вопрос:

Я использую gradle.properties и local.properties для ввода конфигурации buildSrc .

 // in buildSrc
private val localVersions = LocalVersions.create()

object Versions {
  kotlin = localVersions.kotlin
}
object Libs {
  kotlin = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${Versions.kotlin}"
}
  
 // gradle.properties
versions.kotlin=1.3.21
  

Это отлично работает. Но, допустим, я добавляю эту строку в local.propeties (которая должна переопределять значение в gradle.properties ).

 // local properties
versions.kotlin=1.3.30
  

Когда я снова создаю, Versions.kotlin все равно возвращается 1.3.21 , потому что он не понимает, что изменение local.properties повлияет на путь к классу buildSrc.

 private data class LocalVersions(
    val kotlin: String
) {
    companion object {

        private const val gradlePropertiesFileName = "gradle.properties"
        private const val localPropertiesFileName = "local.properties"

        private const val kotlinVersionPropertyName = "versions.kotlin"

        @JvmStatic
        fun create(): LocalVersions {
            val props = Properties().apply {
                fun File.asInputStream(): InputStream = BufferedInputStream(FileInputStream(this))

                val gradlePropsFile = File(gradlePropertiesFileName).apply {
                    require(exists()) {
                        "File does not exist. ${this.absolutePath}"
                    }
                }
                val localPropsFile = File(localPropertiesFileName)

                if (!gradlePropsFile.exists()) {
                    throw FileNotFoundException("Could not find file: $gradlePropsFile.absolutePath")
                }

                load(gradlePropsFile.asInputStream())

                if (localPropsFile.exists()) {
                    load(localPropsFile.asInputStream())
                }
            }

            fun findProperty(name: String): String {
                return props.getProperty(name)
                    ?: throw IllegalStateException("Could not find property `$this` in `gradle.properties` or `local.properties`.")
            }

            return LocalVersions(
                kotlin = findProperty(kotlinVersionPropertyName)
            )
        }
    }
}
  

Если я внесу изменение в значение gradle.properties , Gradle поймет, что buildSrc оно было изменено. Если я внесу аналогичное изменение local.properties , Gradle не поймет, что синхронизация необходима. Как я могу поручить Gradle реализовать это?