Я узнал ответ, поэтому я опубликую его здесь, на случай, если кто-то еще столкнется с той же проблемой.
Поскольку речь идет о пользовательском плагине, он полностью находится в коде агентской части плагина, который выполняет внешний процесс. Как указано в вопросе, внешний процесс выполняется с использованием класса SimpleCommandLineProcessRunner и передает экземпляр класса RunCommandEventsAdapter. Последний возвращает нуль в методе getOutputIdleSecondsTimeout (). Это означает, что SimpleCommandLineProcessRunner будет использовать тайм-аут по умолчанию, равный 90 секундам, если он не определен в параметре teamcity.execution.timeout.
Таким образом, решение состоит в том, чтобы определить класс LongRunningProcessRunCallback, который реализует интерфейс ProcessRunCallback. Обратите внимание, что getOutputIdleSecondsTimeout () возвращает довольно длительное время ожидания.
public class LongRunningProcessRunCallback implements SimpleCommandLineProcessRunner.ProcessRunCallback {
private static final int DEFAULT_TIMEOUT_SECONDS = 60 * 60 * 24;
@Nullable
@Override
public Integer getMaxAcceptedOutputSize() {
return null;
}
@Override
public void onProcessStarted(@NotNull Process process) {
}
@Override
public void onProcessFinished(@NotNull Process process) {
}
@Nullable
@Override
public Integer getOutputIdleSecondsTimeout() {
return TeamCityProperties.getInteger("teamcity.execution.timeout", DEFAULT_TIMEOUT_SECONDS);
}
}
А затем передать его SimpleCommandLieProcessRunner:
final ExecResult result = SimpleCommandLineProcessRunner.runCommand(commandLine,
null,
new LongRunningProcessRunCallback());