JavaArtifactは、Mavenのアーティファクト(jarファイル)を表すトレイト。
JavaArtifactを実装した具体的な構造体として、LocalJarArtifactとMavenArtifactがある。
LocalJarArtifactはjarファイルのパスを保持する。
MavenArtifactはMavenのアーティファクトIDを保持する。 (Mavenリポジトリーから自動的にjarファイルがダウンロードされる)
LocalJarArtifactおよびMavenArtifactのインスタンスは、Jvm::deploy_artifact()でセットする。
これにより、クラスパスにjarファイルが追加される。
LocalJarArtifactではjarファイルのパスを指定する。
use j4rs::LocalJarArtifact;
let artifact = LocalJarArtifact::from("/path/hoge.jar"); jvm.deploy_artifact(&artifact)?;
クラスパスにjarファイルを追加する方法としては、JvmBuilder::classpath_entry()を使う方法もある。
MavenArtifactではMavenのアーティファクトIDを指定する。
use j4rs::MavenArtifact;
let artifact = MavenArtifact::from("org.slf4j:slf4j-api:1.7.36"); jvm.deploy_artifact(&artifact)?;
MavenArtifactを使う場合、初回はMavenリポジトリーからjarファイルがダウンロードされ、ローカルディスク上にキャッシュされる。
Rustアプリケーションの2回目以降の実行では、キャッシュされたjarファイルが使用される。
ただ、依存しているアーティファクトを自動的に読み込んではくれないので、ひとつひとつ自分で指定する必要がある。
なお、デフォルトのMavenリポジトリーはMavenセントラルリポジトリー。
それ以外の独自のMavenリポジトリーを使いたい場合はMavenSettingsで設定する。