6

mavens groupid/artifactid/version を指定して jar をダウンロードする必要があるアプリケーションを作成しています。

私は現在から始めます

public Model pomToModel(String pomUrl) throws Exception {
URL url = new URL(pomUrl);
    InputStream stream = url.openStream();
    try {
        Model model = new MavenXpp3Reader().read(stream);
        return model;
    } finally {
        stream.close();
    }
}

したがって、POM の URL を指定すると、それを表す Maven Model オブジェクトが得られます。これはうまくいくようです。

私が知りたいのは2つのことです:

  1. Maven プラグインが使用する Maven リポジトリでモデルが表す jar アーティファクトの URL を見つける
  2. モデルが与えられたら、ローカル リポジトリで jar を表すファイルを見つけます。

私はすでに低品質のソリューションを持っています.mvnrepository.comにアクセスしてURLを手動でコーディングし、~/.m2/repositoryをファイルのプレフィックスとして使用しています. 私は明らかにこのソリューションを改善できますが、十分にテストされ、maven コードベースでよく使用されているコードを複製することはできません。

Mavenクラスを使用してこれを行う方法を知りたいです。

私はかなりの量のグーグル検索を行ってきましたが、maven と jar に関するものを検索することの面白い点は (stackoverflow であっても)、maven クラスを使用してコーディングする方法ではなく、maven を使用する方法について多くの解決策を見つけることです。

助けてくれてありがとう

4

2 に答える 2

7

オプション1

khmarbaise が推奨する Aether。

Maven 3.0 に同梱されているネイティブ ライブラリです。

オプション 2

コマンド ラインまたはシェル スクリプト内で Maven モジュールをダウンロードするための簡単なソリューションが必要な場合は、Apache ivy にスタンドアロンのjar があります。

例:

IVY 依存関係マネージャーをプログラムで使用する

オプション 3

Maven jar を探しているだけで、依存関係の管理を気にしない場合は、さらに簡単です。

Maven Central から直接 log4j jar を取得する方法は次のとおりです。

curl -O http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.jar

Nexus リポジトリ マネージャーを使用している場合は、便利な REST API があります

Nexus REST API を使用して、特定の groupid/artifactId の最新のアーティファクト バージョンを取得する

于 2012-06-05T18:41:12.463 に答える
2

Maven リポジトリからアーティファクトをダウンロードするには、Aether libを使用することを意図しています。

http://www.sonatype.com/people/category/aether/も参照してください。

さらに、物事を行う方法のと Aether lib の完全なソース コードがあります。ずっと前に、私はエーテルで少し遊んでいました

于 2012-06-05T12:40:40.970 に答える