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) в конце моего основного метода, кажется, решить проблему. Зачем это нужно в одном случае?

0 ответов

Другие вопросы по тегам