pomを使用せずにmavenリポジトリからアーティファクトをプルダウンするために使用できるmvn(mavenディストリビューションに含まれるバイナリ)ではないmavenクライアントはありますか? 運用チームがビルド (ビルドのスナップショットを含む) を取得するためのレポとして Maven リポジトリを使用したいのですが、pom の作成とそれらの依存関係の宣言に煩わされる必要はありません。理想的には、レポ URL を渡して特定のアーティファクトを調整してダウンロードできる cli クライアントだけを探しています。そのようなものは存在しますか、それとも 1 回限りのスクリプトを作成したほうがよいでしょうか?
6 に答える
3 つの簡単なオプションが表示されます。
- リポジトリ内のアーティファクトへのリンクを送信して、ブラウザを使用してもらうだけです。
- インストールして使用します
wget
(wget http://path/to/artifact.extension
)。 - インストールして使用します
mvn dependency:get
( が必要ですmvn
が、必須ではありません。詳細については、この回答pom.xml
を参照してください)。
ネクサスを使用。他のチームがアーティファクトをダウンロードするために使用できる Web インターフェイスを提供します。http://nexus.sonatype.org/
Maven エンベダーを使用し ます。さらに言えば、jar の解決とダウンロードには Maven エンベダー内の機能を使用します。簡単な CLI を作成しようとしている場合でも、リポジトリ構造は複雑ではなく、maven リポジトリ URL、アーティファクト ID、グループ ID、およびバージョンを取得して jar への完全な URL を生成するスクリプトを簡単に作成できます。
これは、jcabi-aetherで行う方法です:
final File repo = this.session.getLocalRepository().getBasedir();
final Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"),
JavaScopes.RUNTIME
);
このライブラリに提供する必要があるのは、1) リモート リポジトリのリスト、2) ローカル リポジトリの場所、3) アーティファクトの Maven 座標だけです。ライブラリは、Sonatype のApache Aetherを使用します。
技術的には、リポジトリは HTTP 経由でアクセスされるため、リポジトリの場所、アーティファクト、および座標が与えられれば、運用チームにどのブラウザでもアクセスできるアーティファクトへの URL を与えることができるはずです。
次のようにプレーン URL を使用して Maven アーティファクトを参照できるPax URLについて考えてみます。
mvn:groupId/artifactId/バージョン
詳細については、 PAX URL Web サイトを参照してください (MVN プロトコル ハンドラー)。
トニ