Один из подходов к этому состоит в том, чтобы вывести файл версии как часть вашей сборки Gradle в местоположение в вашем classpath, которое доступно как ресурс в вашем приложении.
Например:
Вы можете добавить это в свой файл build.gradle, который сгенерирует файл свойств, содержащий номер версии проекта, и добавит его в исходный набор приложений, чтобы он был доступен в пути к классам.
def generatedVersionDir = "${buildDir}/generated-version"
sourceSets {
main {
output.dir(generatedVersionDir, builtBy: 'generateVersionProperties')
}
}
task generateVersionProperties {
doLast {
def propertiesFile = file "$generatedVersionDir/version.properties"
propertiesFile.parentFile.mkdirs()
def properties = new Properties()
properties.setProperty("version", rootProject.version.toString())
propertiesFile.withWriter { properties.store(it, null) }
}
}
processResources.dependsOn generateVersionProperties
Тогда в вашем коде вы сможете получить к нему доступ, прочитав в файле свойств:
class StatusService : IStatusService {
private val versionProperties = Properties()
init {
versionProperties.load(this.javaClass.getResourceAsStream("/version.properties"))
}
override fun getVersion() : String = versionProperties.getProperty("version") ?: "no version"
}
Конечно, вам может показаться, что проще и уместнее просто вывести строку в файл версии, а затем прочитать весь код как строку в вашем коде вместо использования файла свойств.