2

我有一个简单的数据库迁移 JavaExec 任务,它在 gitlab 的构建过程中运行 Java 类。我有许多运行相同代码的微服务。出乎意料的是,我的一项服务突然停止构建,卡在迁移步骤上。这是任务的样子:

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 完成”日志并且构建永远挂起。

更新System.exit(0):在我的主要方法末尾添加显式似乎可以解决问题。为什么仅在这种情况下就需要这样做?

4

0 回答 0