3

Gradle とそのリポジトリ サポート機能について調べています。ドキュメントは、Ivy または Maven リポジトリをサポートしていることを示しています。これが意味することは、私には完全には明らかではありません。

Maven リポジトリの場合、私の理解はより完全なものになると思います。ビルド時に、Nexus や Artifactory などのローカル リポジトリは、MavenCentral から必要なパブリック依存関係をキャッシュします。公開のために、Gradle はプロジェクトの POM.xml を生成し、プライベート アーティファクトをローカル リポジトリに公開できます。私の理解は正しいですか?公開されている MavenCentral POM の誤りを修正するとともに、使用されている公開依存関係を制御したいと考えています。

Ivy については、もう少し混乱しています。1つには、共有 Ivy リポジトリはどのようなものでしょうか? SSH、SFTP、HTTP などでホストされている単なるリモート ディレクトリ ツリーですか? これは Windows と Unix が混在する環境で動作しますか? Gradle はパブリック依存関係とビルドされたアーティファクトを共有 Ivy リポジトリにどのように移動しますか? ジェンキンスもこのステップを実行できますか? 新しいパブリック依存関係が定義され、それらを共有 Ivy リポジトリに移動する必要がある場合、追加のビルド手順が必要ですか? それともシームレスに行われますか?

最後に、2 つのモデルの機能は基本的に同じであると仮定します。Jenkinsビルドマシンと一緒に維持するソリューションは何ですか?

4

1 に答える 1

6

Gradle での Maven サポートに関するあなたの理解は正しいです。依存関係とその依存関係を完全に制御できます (Gradle にはハードコードされたリポジトリがないため、Maven Central の代わりにBintrayを使用できます。たとえば、修正するミスが少なくなります)。

Ivy の依存関係管理も同様です。Ivy には独自のレイアウトがあり ( Artifactory ではサポートされていますが、Nexus ではサポートされていません。 「リポジトリ サポート」を参照)、Web には少数の公開 Ivy リポジトリがあります (例: Ivy RoundUp )。Ivy は Maven リポジトリに適しているため、ほとんどの Ivy ユーザーは Maven Central や Bintray を使用します。

Ivy と Maven の主な違いは、リポジトリの形式ではなく、メタデータの形式にあります。Ivy は pom.xml の代わりに ivy.xml (名前は必須ではありません) を使用し、xml スキーマは異なります。Gradle は両方の形式をサポートし、pom.xml と ivy.xml の両方から推移的な依存関係を読み取ることができ、プロジェクトのメタデータを生成して両方の形式でリポジトリにデプロイできます。

于 2013-04-07T06:11:28.723 に答える