Gradle JavaExec задача никогда не завершается
У меня есть простая задача миграции базы данных JavaExec, которая запускает класс Java во время процесса сборки в gitlab. У меня много микросервисов, выполняющих одинаковый код. Внезапно одна из моих служб перестала работать, застряв на этом этапе миграции. Вот как выглядит задача:
task dbMigrate(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = 'com.blah.Migration'
doFirst {
println "Starting dbMigrate"
}
doLast {
println "dbMigrate finished"
}
}
И класс выглядит так:
public static void main(String[] args) {
AnotherClass.main(args);
System.out.println("@Migration: complete");
}
Интересно, что это вывод:
Starting dbMigrate
@Migration: complete
Основной класс заканчивается, печать последней строки завершена, но я никогда не получаю журнал "dbMigrate Finished", и сборка зависает навсегда.
Обновление: добавление явного System.exit(0)
в конце моего основного метода, кажется, решить проблему. Зачем это нужно в одном случае?