maven セントラルにないのJAR
ないのじゃー
使いたいなーと思っていた JAR が maven セントラルにないとき。
安易にapi files('lib/opensaml-2.6.6.jar')
とかやってませんか?
やってました。
maven はセントラル以外にも設定できる
デフォルトではセントラルにしか見に行かないので、見つからなかったら JAR ファイル実態をプロジェクトに保存しがち。
でも、セントラル以外のリポジトリに置いてあることが多々あります。
セントラルを見に行くと、情報だけはあったりします。
注目すべきは画像下部、Note: this artifact it located alfresco repository
のところ。
そう、セントラルにはないけれどhttps://artifacts.alfresco.com/nexus/content/repositories/public/
にならあるよ!と教えてくれていたのです!
gradle
のリポジトリ情報に追記すると、maven
のセントラルにない情報は記述順の優先度で取得してくれます。
build.gradle に maven リポジトリ情報を追加する
gradle に追記
gradle.build に追記します。
repositories {
mavenLocal()
mavenCentral()
maven { url "https://artifacts.alfresco.com/nexus/content/repositories/public/" }
}
pom.xml に追記
mave でやるならたぶんこう。
<repositories>
<!-- 中略 -->
<repository>
<id>alfresco</id>
<name>Alfresco</name>
<url>https://artifacts.alfresco.com/nexus/content/repositories/public/</url>
</repository>
</repositories>
上記の例だとローカルキャッシュをみて、なかったらセントラルから取得、それでもなければ alfresco のキャッシュサーバから取得。
それでもなければ未解決エラーになります。
これでプロジェクトサイズを削減できますね!
勉強になりました。
おまけ
※ 記事では紹介のために alfresco のみ追加しましたが、oensaml2.6.6
を利用してコンパイルを通すためにはあと 2 つ必要でした。
maven { url "https://build.shibboleth.net/nexus/content/repositories/releases/" }
maven { url "https://repository.mulesoft.org/releases/" }
Oracle JDBC 関連
Oracle 系はセントラル見ても辿れない。
https://www.oracle.com/database/technologies/maven-central-guide.html からたどると https://repo1.maven.org/maven2/
がリポジトリっぽいです。
バージョンは限定しておいてあるみたいなので注意。
プロジェクトで使ってた orai18n:11.2.0.3
はなく、 orai18n:11.2.0.4
しか置いてませんでした。
repositories {
maven { url "https://repo1.maven.org/maven2/" }
}
api 'com.oracle.ojdbc:ojdbc8:19.3.0.0'
api 'com.oracle.database.nls:orai18n:11.2.0.4'
まとめ
JAR ライブラリは、きっとどこかで配信してくれています。
あきらめずに探してみよう!