2

ビルド システムを Ant から Ant with Ivy に変換している途中で、必要な特定の jar を指定する際に問題が発生しました。

  • groupId : net.sf.json-lib
  • artifactId : json-lib
  • バージョン: 2.3

Ivy で次のように指定しました。

<dependency org="net.sf.json-lib"  artifact="json-lib"
    rev="2.3"     conf="compile->default"/>

そして、次のエラーが発生しました:

[ivy:retrieve]  ==== public: tried
[ivy:retrieve]    http://buildl01.tcprod.local/artifactory/libs-release/net/sf/json-lib/json-lib/2.3/json-lib-2.3.jar
[ivy:retrieve]          ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]          ::              FAILED DOWNLOADS            ::
[ivy:retrieve]          :: ^ see resolution messages for details  ^ ::
[ivy:retrieve]          ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]          :: net.sf.json-lib#json-lib;2.3!json-lib.jar
[ivy:retrieve]          ::::::::::::::::::::::::::::::::::::::::::::::

json-lib-2.3.jarIvyがリポジトリからファイルをダウンロードしようとしたことに注意してください。

Central Maven Repositoryを検索したところ、アーティファクトは呼び出されておらずjson-lib-2.3.jarjson-lib-2.3-jdk-13.jarまたはjson-lib-2.3-jdk-15.jar.

問題は、アーティファクトの名前の指定方法です。バージョン番号は、jar 名の途中に表示されます。アーティファクトが「json-lib-jdk-15-2.4.jar」の場合、次のようにできます。

<dependency org="net.sf.json-lib"  artifact="json-lib"
    rev="2.3"     conf="compile->default">
    <artifact name="json-lib-jdk-15"/>
</dependency>

この jar をダウンロード用に指定するにはどうすればよいですか?

4

1 に答える 1

7

jar 名の末尾にある「もの」は分類子と呼ばれます。特定のプラットフォームをターゲットにしたり、ソースや Javadoc を提供したりするために使用されます。

jar を取得するには、次のように分類子を定義する必要があります。

<ivy-module version='2.0' xmlns:m="http://ant.apache.org/ivy/maven">
...
<dependency org="net.sf.json-lib" artifact="json-lib" rev="2.3"conf="compile->default">
    <artifact name="json-lib" type="jar" m:classifier="jdk15"/>
</dependency>

詳細については、この記事を参照してください。

于 2012-11-19T20:52:58.640 に答える