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>

このライブラリの場合、依存は無いのでこれで十分だ。