既存の Mavenプロジェクト を久しぶりにメンテしようとしたときの話です。
そのプロジェクトはMavenで管理で、Gitから取得したソースでは「pom.xml」が改変されていました(jacocoの追加)。
自分が使っているIDEは NetBeans はVer8.2でありまして、かなり古いVersionなのですが(Apacheでは無いVersion)、「消去」や「ビルド」など、すべてのmaven操作ができなくなってしまいました。
原因調査
原因は、mavenセントラルへのアクセスに失敗してしまうことです。
jacocoが入っていると、どうやら毎回mavenセントラルにアクセスに行くようです(詳細は不明)。
------------------------------------------------------------------------ Building ProjectName 1.0 ------------------------------------------------------------------------ Downloading: http://repo.maven.apache.org/maven2/org/jacoco/jacoco-maven-plugin/0.8.6/jacoco-maven-plugin-0.8.6.pom ------------------------------------------------------------------------ BUILD FAILURE ------------------------------------------------------------------------ Total time: 4.259 s Finished at: 2020-12-25T17:58:03+09:00 Final Memory: 9M/245M ------------------------------------------------------------------------ Plugin org.jacoco:jacoco-maven-plugin:0.8.6 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.jacoco:jacoco-maven-plugin:jar:0.8.6: Could not transfer artifact org.jacoco:jacoco-maven-plugin:pom:0.8.6 from/to central (http://repo.maven.apache.org/maven2): Failed to transfer file: http://repo.maven.apache.org/maven2/org/jacoco/jacoco-maven-plugin/0.8.6/jacoco-maven-plugin-0.8.6.pom. Return code is: 501, ReasonPhrase: HTTPS Required. -> [Help 1] To see the full stack trace of the errors, re-run Maven with the -e switch. Re-run Maven using the -X switch to enable full debug logging. For more information about the errors and possible solutions, please read the following articles: [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
ブラウザから直接 http://repo.maven.apache.org/maven2/ にアクセスしてみたところ・・・
「501 HTTPS Required」と返ってきましたので、どこかのタイミングでHTTPS強制になったのですね。
その情報をキャッチアップできていなかったので、「情弱」な自分を恥じてしまいそう。。。
上記のサイトを拝見したところ、2020年の1月にルールが変更になった様子。
原因がわかれば、ルールに従うのみですね。
解決方法
私のmavenは、「C:\apache-maven-3.2.2」に設置していましたので、その中にある設定ファイル(conf\settings.xml)にセントラル向けのURLを追記しました。
mirrorsタグ内に書きを追記します。 (なお、IDEを再起動しなくても、追記し上書き保存しただけで、エラーが発生しなくなりました)
<mirrors> <mirror> <id>mirror1</id> <mirrorOf>central</mirrorOf> <name>mirror1</name> <url>https://repo1.maven.org/maven2/</url> </mirror> </mirrors>
まとめ
以上で問題解決できました。
課題は次の2つ。
(1) いつまでも古い道具を使っていてはいけないよ
(2) 今使っている道具の情報収集を怠ってはいけないよ
という気づきを得ましたが、まずは最新版のApache NetBeans12で、対象のプロジェクトがコントロールできるかどうかを検証してみます。
前進あるのみですね!