Плагин Maven-релиза выдает исключение Hostname Not Found?

Плагин Maven-релиза выдает исключение Hostname Not Found?

Я пытаюсь выпустить проект в Jenkins и получаю исключение «хост не найден».

Caused by: java.lang.RuntimeException: java.net.UnknownHostException: XXXXXXXXXXXXXXX: nodename nor servname provided, or not known
    at org.apache.maven.scm.provider.perforce.PerforceScmProvider.generateDefaultClientspecName(PerforceScmProvider.java:420)
    at org.apache.maven.scm.provider.perforce.PerforceScmProvider.getClientspecName(PerforceScmProvider.java:395)
    at org.apache.maven.scm.provider.perforce.command.checkout.PerforceCheckOutCommand.executeCheckOutCommand(PerforceCheckOutCommand.java:75)
    at org.apache.maven.scm.command.checkout.AbstractCheckOutCommand.executeCommand(AbstractCheckOutCommand.java:82)
    at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)

Если прочитать исходный код, то можно сделать вывод, что исключение возникает в этой строке:

InetAddress.getLocalHost().getHostName();

Поскольку я не контролирую исходный код для плагина релиза, кроме изменения кода, есть ли способ обойти эту проблему? Могу ли я настроить свои хосты etc каким-либо образом, чтобы принудительно получить определенный ответ от "InetAddress.getLocalHost().getHostName()"?

решение1

Я предполагаю, что ваш XXXXXXXXXXXXXXX скрывает фактическое, нелокальное имя хоста (или вариант/псевдоним локального хоста).

Это может произойти, если имя хоста/IP-адрес вашего компьютера не может быть просмотрен как в прямом, так и в обратном направлении в соответствии с настройками локального преобразователя имен. InetAddress.getLocalHost()Известно, что он выполняет обратный поиск для разрешения локального хоста.

Запустите hostnameкоманду и убедитесь, что у вас есть запись, сопоставляющая ваш реальный IP-адрес с этим именем в /etc/hosts. Возможно, hostnameвозвращается либо полное доменное имя хоста, либо псевдоним/короткое имя хоста, и их нельзя просматривать напрямую/обратно.

Еще одной проблемой может быть IPv6 по сравнению с IPv4.

Обратите внимание, что JVM Jenkins кэширует поиск имен хостов, поэтому имеет смысл иметь небольшую тестовую программу для выполнения тестового вызова InetAddress.getLocalHost(), в противном случае вам придется перезапускать Jenkins после каждого тестируемого изменения конфигурации.

Пожалуйста, предоставьте отзыв/дополнительную информацию, чтобы я мог улучшить этот ответ.

Связанный контент