Ivy 2.3.0、Artifactory 3.0.3、および Ant を試しています。問題は、使用しているファイルの拡張子が .jar でない場合、Artifactory リポジトリに対して動作するように ivy:buildnumber を設定できないことです。それは私のローカルのものに対してうまく動作します。ビルド番号の設定に失敗した場合、Artifactory に対して試してみると。-debug を指定して Ant を実行すると、次の出力が得られます。
Setting project property: ivy.version -> 2.3.0
[ivy:buildnumber] using oe to list all in ${http://localhost:8081/artifactory/repo/com/testorg/testmod
[ivy:buildnumber] using oe to list all in http://localhost:8081/artifactory/repo/com/testorg/testmod/
[ivy:buildnumber] ApacheURLLister found URL=[http://localhost:8081/artifactory/repo/com/testorg/testmod/20130814190841/].
[ivy:buildnumber] ApacheURLLister found URL=[http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml].
[ivy:buildnumber] ApacheURLLister found URL=[http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml.md5].
[ivy:buildnumber] ApacheURLLister found URL=[http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml.sha1].
[ivy:buildnumber] found 4 resources
[ivy:buildnumber] using oe to list all in http://localhost:8081/artifactory/repo/com/testorg/testmod/20130814190841
[ivy:buildnumber] ApacheURLLister found URL=[http://localhost:8081/artifactory/repo/com/testorg/testmod/20130814190841/testmod-20130814190841.pl].
[ivy:buildnumber] ApacheURLLister found URL=[http://localhost:8081/artifactory/repo/com/testorg/testmod/20130814190841/testmod-20130814190841.pl.md5].
[ivy:buildnumber] ApacheURLLister found URL=[http://localhost:8081/artifactory/repo/com/testorg/testmod/20130814190841/testmod-20130814190841.pl.sha1].
[ivy:buildnumber] found 3 urls
[ivy:buildnumber] 0 matched http://localhost:8081/artifactory/repo/com/testorg/testmod/20130814190841/[artifact]-20130814190841.jar
[ivy:buildnumber] using oe to list all in http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml
[ivy:buildnumber] HTTP response status: 404 url=http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml/
[ivy:buildnumber] CLIENT ERROR: Not Found url=http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml/
[ivy:buildnumber] problem while listing resources in http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml with oe:
[ivy:buildnumber] java.io.IOException The HTTP response code for http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml/ did not indicate a success. See log for more detail.
[ivy:buildnumber] using oe to list all in http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml.md5
[ivy:buildnumber] found 0 urls
[ivy:buildnumber] 0 matched http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml.md5/[artifact]-ivy-20130814190841.xml.md5.jar
[ivy:buildnumber] using oe to list all in http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml.sha1
[ivy:buildnumber] found 0 urls
[ivy:buildnumber] 0 matched http://localhost:8081/artifactory/repo/com/testorg/testmod/ivy-20130814190841.xml.sha1/[artifact]-ivy-20130814190841.xml.sha1.jar
Setting project property: ivy.new.revision -> 0
Setting project property: ivy.new.build.number -> 0
Property "ivy.build.number" has not been set
[echo] new.rev: working@Win7Dev 0 ${ivy.build.number} 0
重要な行は次のようです。
[ivy:buildnumber] 0 matched http://localhost:8081/artifactory/repo/com/testorg/testmod/20130814190841/[artifact]-20130814190841.jar
ファイルが .jar ファイルの場合、「1 が一致しました...」と表示され、ビルド番号が設定されます。一方、.zip などの別のファイルである場合は、上記のように失敗します。
ivy.xml ファイル内の項目の定義は次のとおりです。
<publications>
<artifact name="testmod" ext="zip" type="zip"/>
</publications>
Artifactory で、maven-2-default レイアウトで testmod を含むリポジトリを作成しました。
私のAntターゲットには以下が含まれます:
<ivy:info/>
<ivy:buildnumber resolver="oe" organisation="${ivy.organisation}" module="${ivy.module}"/>
<echo>new.rev: ${ivy.revision} ${ivy.new.revision} ${ivy.build.number} ${ivy.new.build.number}</echo>
oe リゾルバーは次のように定義されます。
<url name="oe" m2compatible="true" >
<ivy pattern="${http://localhost:8081/artifactory/repo/[organisation]/[module]/ivy-[revision].xml"/>
<artifact pattern="http://localhost:8081/artifactory/repo/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/>
</url>
次のように定義された ibiblio リゾルバーを使用すると、デバッグ出力と結果は同じになります。
<ibiblio name="oe1" m2compatible="true" root="http://localhost:8081/artifactory/repo" useMavenMetadata="false"/>
Artifactory リポジトリのモジュールは、Jenkins Artifactory プラグインを使用してそこに到達しました。これを使用して:
Ivy pattern: [organisation]/[module]/ivy-[revision].xml
Artifact pattern: [organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]