Maven リリース プラグインがホスト名が見つからない例外をスローしていますか?

Maven リリース プラグインがホスト名が見つからない例外をスローしていますか?

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();

コードを変更する以外にリリース プラグインのソースを制御できないため、この問題を回避する方法はありますか? 「InetAddress.getLocalHost().getHostName()」からの特定の応答を強制するように、etc ホストを何らかの方法で設定できますか?

答え1

XXXXXXXXXXXXXXX は、実際の非ローカルホスト (またはローカルホストのバリアント/エイリアス) ホスト名をマスクしていると想定しています。

これは、ローカルの名前解決の設定に従って、マシンに正引きと逆引きの両方ができないホスト名/IP アドレスがある場合に発生する可能性があります。 InetAddress.getLocalHost()ローカル ホストを解決するために逆引きを実行することが知られています。

コマンドを実行しhostname、実際の IP アドレスと 内の名前が一致するエントリがあることを確認します/etc/hosts。 は FQDN ホスト名またはエイリアス/短縮ホスト名のいずれかを返し、これらを前方/逆引き検索できない可能性がありますhostname

もう 1 つの問題は、IPv6 と IPv4 の違いです。

Jenkins JVM はホスト名の検索をキャッシュするので、 へのテスト呼び出しを行うための小さなテスト プログラムを用意しておくと便利ですInetAddress.getLocalHost()。そうしないと、テストする構成変更ごとに Jenkins を再起動する必要があります。

この回答を改善できるよう、フィードバックや追加の詳細を提供してください。

関連情報