2

ローカル ファイルシステムの Ivy リポジトリがあり、Nexus や Artifactory などのリモート Maven リポジトリにすべてのアーティファクトをインストール (公開) する必要があります。次の行に沿って、ivyインストール タスクの ant スクリプトを作成しました。

<ivy:install 
    organisation="apache" 
    module="commons-lang" 
    revision="2.0" 
    from="ivyfilesys" to="remotemaven"/>

現在、私のローカル ivy リポジトリ ( testcompile) には複数の構成があり、これらはそこにある ivy.xml ファイルで宣言されています。ローカル リポジトリは、アーティファクトごとに jars と ivys の 2 つのフォルダーで構成されます。Jars フォルダーには jar が含まれ、ivys フォルダーには内部で構成が宣言された ivy.xml が含まれます。SHA および MD5 チェックサム ファイルも存在しますが、他には何もありません。

Ivy が利用可能な構成について Maven リポジトリに通知することを期待していましたが、そうではないようです。解決のために新しく作成されたリポジトリに切り替えた後、Ivy はそこにインストールしたばかりのアーティファクトを見つけることができず、構成が欠落しているtestと主張します。compile

ローカル リポジトリはファイル ベースとして構成され、アーティファクトはそこから問題なく解決できます。リモート リポジトリは ibiblio、m2 互換です。

<ibiblio name="remotemaven" m2compatible="true"
      root="http://my.server:8081/"
      pattern="[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
/>

ルートはサーバーに設定されています。インストールされたアーティファクトがサーバーに表示されるため、ルートと認証はおそらく正しく構成されています。

Ivy に独自の ivy.xml を尊重させ、Nexus または Artifactory リポジトリに構成をインストールして、後で解決できるようにする方法はありますか?

  • 多分 ivy:install タスクにはもっとオプションが必要ですか?
  • いくつかの構成ファイルが欠落しているか不完全である可能性がありますか?
4

1 に答える 1

2

Ivy は Maven リポジトリから構成をインストールおよび取得できますか?

簡単な答えはノーです。

ivy が Maven リポジトリを解釈する方法

Maven は、Ivy の構成の概念をサポートしていません。最も近い比較は、Maven の「スコープ」です。これらは固定されており、ivy のibiblio リゾルバーはこれらを構成にマップする方法を理解しています。次の回答には、より詳細な説明があります。

ivy がファイルを Maven リポジトリにプッシュする方法

アーティファクトを Maven リポジトリに公開するときは、Maven メタデータ ファイル pom.xml も生成する必要があります。makepomタスクを使用すると、特定の Maven スコープに使用するアイビー構成を指定できます。次の回答が役立つ場合があります。

Ivy は固定数のスコープに制限されていません。アイビー構成ははるかに柔軟ですが、各構成が標準プロジェクトのクラスパスを設定するために使用されていると想定することはできません....

Maven リポジトリの一括読み込み

結論として、ローカルの ivy リポジトリから Maven リポジトリにファイルを一括転送することは、次の理由から簡単なことではありません。

  1. ivy ファイルを Maven POM に変換するのは難しい場合があります。Ivy の構成は、Maven スコープとまったく同じようには機能しません。
  2. ローカル リポジトリには、既に Maven Central にあるファイルが含まれている可能性があるため、明示的にアップロードする必要はありません。

私の経験では、最大の問題は、どこから来たのか記録のないサードパーティの jar が大量にあることです。新しいプロジェクトの Maven 化を支援するために、Nexus 検索 API を使用して Maven Central データベース内の一致するレコードを検索する groovy スクリプトを開発しました。一般的に言えば、このアプローチにより、ローカルに保管される jar の数が 80% も削減されます。

お役に立てれば。

于 2014-11-09T13:06:54.820 に答える