Mavenリポジトリにアーティファクトを無理やり入れる
公開のMavenリポジトリには無いjarファイルを、ローカルなMavenリポジトリに入れて、Gradleから利用したい。どうすればいいのか?
対象のjarファイルとローカルなMavenリポジトリ。
某所からダウンロードした二つのjarファイルだ。
- smartgwt.jar
- smartgwt-skins.jar
ローカルなMavenレポジトリは、以下のようなものだ。Eclipseプロジェクトになってはいるが、単純なフォルダ構造である。
解決
正確なMavenリポジトリの構造がわかっていないのだが、他のアーティファクトを参考に、見ようみまねでやってみるとうまくいった。Gradleのdependenciesに指定すれば、引っ張ってきてくれる。
まず、groupは両者とも、com.smartgwtで、IDはそれぞれskins、smartgwt。バージョンは共に12.0である。上記のようなフォルダ構造を作り、jarファイルの名称はid+バージョン番号に変更する。
maven-metadata.xmlの中身はsmartgwtの場合、以下のようなものだ。
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>com.smartgwt</groupId>
<artifactId>smartgwt</artifactId>
<versioning>
<release>12.0</release>
<versions>
<version>12.0</version>
</versions>
<lastUpdated>20190805043513</lastUpdated>
</versioning>
</metadata>
複数のバージョンがあるなら、その分だけ<version>を加えていけばいいらしい。
pom.xmlは以下である。
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.smartgwt</groupId>
<artifactId>smartgwt</artifactId>
<version>12.0</version>
</project>
このライブラリの場合、依存は無いのでこれで十分だ。