3

Ivy リポジトリは、http: //ant.apache.org/ivy/history/latest-milestone/terminology.htmlで説明されているように設定されています。

Mavenからアクセスしようとしています。パスは問題なくモジュールにマップされます。モジュール foo があり、foo は成果物 foo-api.2.1.0.jar および foo.2.1.0.jar (実装) を作成します。問題は foo-api.2.1.0.jar です。

Maven 分類子を試してみましたが、foo-api.2.1.0.jar ではなく、foo.2.1.0-api.jar を見つけようとしています。

リンクの図は、ivy.xml または pom.xml が mymod-api、mymod-impl のサンプル レイアウトを作成できることを意味します。ポンポンでどうやってそれを行うのですか?

アップデート:

提案は、maven アーティファクトを mymod-api および mymod-impl にすることでしたが、これにより、次のリポジトリに対して maven クエリが実行されます。

  /com/mycorp/foo-api/2.1.0.0/foo-api.jar
  /com/mycorp/foo/2.1.0.0/foo.jar

一方、アイビーはそれらを次のように述べています。

  /com/mycorp/foo/2.1.0.0/foo-api.jar
  /com/mycorp/foo/2.1.0.0/foo.jar

その結果、maven アーティファクトを使用するだけでは、それらを検出できなくなります。

更新 2:

Nexus リポジトリ マネージャーを使用しています。

4

2 に答える 2

1

リポジトリマネージャーとしてNexusを使用している場合は、アイビービルドの構成方法に関する次の回答を確認してください。

ivyでパブリックMavenリポジトリを使用する

Update1

ivyからNexusへのファイルの公開については次のとおりです。

ivyとnexusを使用してサードパーティのアーティファクトを公開する方法

事前にお詫び申し上げます。これは非常に包括的であり、Mavenでの分類子の重要性についても説明します。

Update2

Nexusに公開する場合:

<ivy:publish resolver="deploy"...>
    <artifacts pattern="${build.dr}/[artifact](-[classifier]).[ext]"/>
</ivy:publish>

ibilioリゾルバーを使用していることを確認してください。

<ivysettings>
    <settings defaultResolver="central"/>
    <credentials host="somehost" realm="Sonatype Nexus Repository Manager" username="????" passwd="????"/>
    <resolvers>
        <ibiblio name="central" m2compatible="true"/>
        <ibiblio name="deploy" root="http://somehost/nexus/content/repositories/repo" m2compatible="true"/>
    </resolvers>
</ivysettings>

「落とし穴」はm2compatible="true"です。歴史的な理由から、リゾルバーははるかに古いMaven 1リポジトリ形式をサポートしています(IbilioはMaven Centralの古い名前です)。

于 2012-12-04T20:07:23.120 に答える
1

分類器は必要ありません。それはあなたが言ったことを行います。必要なのは、アーティファクト ID がそのアーティファクトの「foo-api」であることです。問題ありません、意図したとおりに動作しています。

于 2012-12-04T03:24:33.193 に答える