LoginSignup
1
0

More than 3 years have passed since last update.

【Maven】ライブラリの同期が物凄く遅くなった話と対処

Posted at

TL;DR

  • Mavendependencyの検索をrepositoriesの上の方に定義したリポジトリから行う
  • このため、Maven Centralなど、優先度の高いリポジトリをrepositoriesの下に書くと、他のリポジトリから検索を始めてしまい、同期にかかる時間が伸びる

状況

ある日から突然ライブラリのアップデートにかかる時間が物凄く伸びました。
回線速度には特に問題が無かったため、pomの設定の方が原因だと思われました。

現象前後では、Maven Centralhttps必須化に伴って発生した問題を修正するため、以下のように確実にhttpsで繋ぐための設定をrepositoriesに足していました。

pom.xml
<repositories>

    <!-- その他リポジトリ -->

    <repository>
        <id>central</id>
        <url>https://repo1.maven.org/maven2/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
</repositories>

問題点

Mavenrepositoriesに定義されたリポジトリを上から順に検索します。
つまり、上記設定では「その他リポジトリを全て舐めた後にCentralを見にいく」という挙動になります。

一方、利用しているライブラリは大半がCentralに存在しているため、結果としてアップデート全般が物凄く遅くなっていました。

対処

優先度の高いものから順に書き直せば問題は解決します。

pom.xml
<repositories>
    <repository>
        <id>central</id>
        <url>https://repo1.maven.org/maven2/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>

    <!-- その他リポジトリ -->

</repositories>

応用

有用性は微妙な感が有りますが、ライブラリの同期をその場だけ高速化したい場合、一時的にrepositoryの優先度を変えた上で、キャッシュできたら優先度を戻せば早くなります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0