1

それをより意味のあるものにするために質問するための極端な編集:

オンラインリポジトリからプルできるバージョンではなく、ローカルバージョンのhttpclientを使用する必要があると仮定しましょう(署名の理由により)。私がこれを処理したい方法はそうです...

ivy.xml


<dependencies>  
    ...Other dependencies here
    <dependency org="com.apache" name="httpclient" rev="4.2.2" conf="compile->default" ext="jar" />
</dependencies>

ivysettings.xml


<settings defaultResolver="central"/>

<resolvers>
<url name="repo">
    <ivy pattern="http://myServer:8080/Repo/[organisation]/[artifact]/[revision]/ivy.xml" />
    <artifact pattern="http://myServer:8080/Repo/[organisation]/[artifact]/[revision]/[artifact].[ext]"/>
</url>

<url name="httpclient">
    <artifact pattern="http://myServer:8080/Repo/com.apache/httpclient/4.2.2/[artifact].[ext]"/>
</url>



<modules>
    <module organisation="com.apache" resolver="repo" />
    <module organisation="com.httpclient" resolver="httpclient" />
</modules>

ここで私が望んでいるのは(そしてあまり運がなかった)、com.apacheリゾルバーがmyServer:8080 / Repo / com.apache / httpclient / 4.2.2 / ivy.xmlを探して、それを読んでいることです。そのファイルの内容は次のとおりです。

ivy.xml(myServer:8080 / repo / ...ディレクトリ内)


    <dependency org="com.httpclient" name="commons-codec" rev="1.6" />
    <dependency org="com.httpclient" name="commons-logging" rev="1.1.1" />
    <dependency org="com.httpclient" name="fluent-hc" rev="4.2.2" />
    <dependency org="com.httpclient" name="httpclient" rev="4.2.2" />
    <dependency org="com.httpclient" name="httpclient-cache" rev="4.2.2" />
    <dependency org="com.httpclient" name="httpcore" rev="4.2.2" />
    <dependency org="com.httpclient" name="httpmime" rev="4.2.2"/>

最初のファイルにマークアップを含めるのではなく、2番目のxmlファイルを読みたい理由は、頻繁に含めるものに追加されるLOCの数を考えると非常に明白です。また、将来のすべてのインクルードも簡単になります。

今私が得ているエラーは次のとおりです。

一部のプロジェクトが解決されないcom.myCompany#myProgramt; working @ CompNameの依存関係を解決できません未解決の依存関係:com.apache#httpclient; 4.2.2:見つかりません


この件についてご協力いただきありがとうございます。

4

3 に答える 3

1

次のリゾルバーを使用するようにビルドを構成する場合

 <ibiblio name="central" m2compatible="true"/>

あなたはツタにMavenCentralから依存関係をダウンロードするように言っています

ここでのあなたの目的は何ですか?Maven Centralのように機能的に機能するローカルのツタのリポジトリを作成するには?その場合、最も簡単な解決策は、NexusArtifactoryArchivaなどのMavenリポジトリマネージャーをセットアップすることです。Mavenリポジトリマネージャーは、CentralMavenリポジトリに保存されているスマートキャッシュおよび「プロキシ」jarのように機能できます。

ローカルのMavenリポジトリーを使用するようにビルドを構成するのは簡単です。

 <ibiblio name="central" m2compatible="true" root="http://hostname:portnum/MavenRepo/>
于 2012-11-27T06:13:29.503 に答える
1

Ivyは、同じリゾルバーで特定のアーティファクトのすべての依存関係を見つけることを期待しています。com.apacheしたがって、リゾルバーでのアーティファクトを検出し、そこでもrepo検出することを期待しますcom.httpclient

Ivyは、同じリゾルバー宣言内で、ステートメントを順番に<ivy pattern.../>ロールスルーします。<artifact pattern.../>これを利用して、両方のリポジトリに必要な順序でヒットする単一のリゾルバを作成できます。

<url name="amalgamation">
    <ivy pattern="http://myServer:8080/Repo/[organisation]/[artifact]/[revision]/ivy.xml" />
    <artifact pattern="http://myServer:8080/Repo/[organisation]/[artifact]/[revision]/[artifact].[ext]"/>
    <artifact pattern="http://myServer:8080/Repo/com.apache/httpclient/4.2.2/[artifact].[ext]"/>
</url>
于 2012-11-28T18:35:05.193 に答える
0

リモートJARリポジトリにどのサーバーを使用していますか?

NexusとArtifactoryはどちらも、リモートリポジトリからjarをプルする前に、ローカルに保存されているjarをプルするように設定できます。このように、あなたはあなたのをつぶす必要はありませんivysettings.xml。代わりに、Artifactory/Nexusでjarの好みのバージョンをダウンロードするだけです。そして、どちらも無料のオープンソースのダウンロードです。Ivyの設定をいじくり回すよりも、Artifactory/Nexusでやりたいことをするほうがずっと簡単です。

ちなみに、 GithubにIvyプロジェクトがあります。このプロジェクトをAntプロジェクトにアタッチするだけで、すべてがIvy用に自動的に構成されます。このようにして、サイト全体ですべてのプロジェクトにIvyを使用でき、すべてが一元管理されます。

于 2012-11-28T19:34:07.347 に答える