Если я определяю пользовательскую задачу gradle в buildSrc: как узнать относительный путь к проекту, из которого вызывается задача?
В моей папке buildSrc у меня естьпользовательская задача, которая создает файл Enum our of my message.properties:
open class GenerateEnumTask : DefaultTask() {
@get:Input
open var inputFolder: String = "src/main/resources"
@get:Input
open val targetFilePath: String = "src/generated/kotlin/MessageCode.kt"
@get:OutputFile
val enumFile = File(targetFilePath)
@TaskAction
fun generateEnum() {
...
}
@Internal
override fun getDescription() = "This task uses downloaded property files and creates an enum kotlin file"
}
Затем я хочу убедиться, что перечисление генерируется до компиляции кода.Поэтому я помещаю это в подпроект «ядро», где мне нужен Enum.
build.gradle.kts:
tasks {
val generateEnumTask by registering(GenerateEnumTask::class)
withType<KotlinCompile> {
kotlinOptions.jvmTarget = Versions.jvmTarget
dependsOn(generateEnumTask)
dependsOn(formatKotlin)
doFirst{
println("compile kotlin in core project")
}
}
}
Это действительно работает, если я запускаю gradle compileKotlin
непосредственно изподпапка основного проекта.Однако, если я запускаю ту же команду из проекта root , код выполняет поиск папки src в корневом каталоге.