Ivy Resolve из last.integration не работает при запуске из Jenkins

поэтому у меня есть существующая сборка ant, и я хотел бы разрешить ее зависимости с помощью Ivy. У меня есть файлы ivy.xml и ivysettings.xml, которые работают с IvyDE в Eclipse, а также работают при запуске из командной строки против ivy-2.3.0.jar. (Они работают так, как в отчетах Ivy о загрузке зависимостей).

У меня проблема в том, что они не работают при запуске из любого сценария сборки, когда атрибут «rev» указан как «latest.integration». Если я укажу версию, то зависимость будет разрешена. Чтобы было ясно, эта конкретная зависимость является внутренней библиотекой, размещенной Artifactory.

Я довольно озадачен тем, что я могу изменить или попытаться определить проблему. Я получаю тот же сбой при запуске ivy findrevision.

Обратите внимание, что Jenkins работает на Mac, но я могу напрямую использовать банку Ivy для разрешения зависимостей, используя те же файлы ivy на этом компьютере, проблема связана только с разрешением через Jenkins.

Я понимаю, что это вряд ли будет чем-то, на что кто-то может взглянуть и указать прямо на проблему, особенно учитывая, что во всех других ситуациях, даже при запуске фрагмента из сборки ant через eclipse, разрешение работает правильно. Но если у кого-то есть какие-либо предложения, они будут более чем приветствоваться!

Во всяком случае, мой ivy.xml

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
    <info
        organisation="MyOrg"
        module="MyModule"
        status="integration">
    </info>

    <dependencies>
        <dependency org="MyOrg" name="DEP" rev="latest.integration">
            <artifact name="DEP" type="jar" ext="jar" />
        </dependency>
        <dependency org="junit" name="junit" rev="4.8.1" />
    </dependencies>
</ivy-module>

И мой ivysettings.xml (зависимость называется, например, DEP-0.1-SNAPSHOT.jar)

<?xml version="1.0" encoding="UTF-8"?>
<ivy-settings>
  <settings defaultResolver="snapshot" />
  <!--Authentication required for publishing (deployment). 'Artifactory Realm' is the realm used by Artifactory so don't change it.-->
  <credentials host="HOST" realm="Artifactory Realm" username="USR" passwd="PASS" />
  <resolvers>
    <chain name="main">
      <!-- <ibiblio name="release" m2compatible="true" root="http://HOST/artifactory/libs-release" /> -->
      <chain name="snapshot" changingPattern="0.*" checkmodified="true">
        <ibiblio name="public" m2compatible="true" root="http://HOST/artifactory/libs-snapshot" />
      </chain>
    </chain>
  </resolvers>
</ivy-settings>

И, наконец, мой скрипт сборки выглядит примерно так

<project name="MyModule Continuous Integration" xmlns:ivy="antlib:org.apache.ivy.ant">
....
<target name = "resolveDependencies" >
    <ivy:configure file="/MyModule/ivysettings.xml" />
    <ivy:findrevision organisation="MyOrg" module="DEP" revision="latest.integration" property="found.revision" />
    <echo message="Found revision: ${found.revision}" />
    <ivy:resolve file="/MyModule/ivy.xml" refresh="true" type="jar" />
    <ivy:cachepath pathid="ivy.dependencies" />
</target>
....
</project>

И для завершения вид вывода, который я получаю от сборки Jenkins:

[ivy:findrevision] snapshot: Checking cache for: dependency: MyOrg#DEP;latest.integration {}
[ivy:findrevision] don't use cache for MyOrg#DEP;latest.integration: checkModified=true
[ivy:findrevision] default-cache: no cached resolved revision for MyOrg#DEP;latest.integration
[ivy:findrevision]      tried http://HOST/artifactory/libs-snapshot/MyOrg/DEP/[revision]/DEP-[revision].pom
[ivy:findrevision] CLIENT ERROR: Not Found url=http://HOST/artifactory/libs-snapshot/MyOrg/DEP/maven-metadata.xml
[ivy:findrevision]  maven-metadata not available: http://HOST/artifactory/libs-snapshot/MyOrg/DEP/maven-metadata.xml
[ivy:findrevision] WARN: problem while listing resources in http://HOST/artifactory/libs-snapshot/MyOrg/DEP/ with public:
[ivy:findrevision] WARN:   java.lang.NullPointerException null
[ivy:findrevision]      tried http://HOST/artifactory/libs-snapshot/MyOrg/DEP/[revision]/DEP-[revision].jar
[ivy:findrevision]  maven-metadata not available: http://HOST/artifactory/libs-snapshot/MyOrg/DEP/maven-metadata.xml
[ivy:findrevision] WARN: problem while listing resources in http://HOST/artifactory/libs-snapshot/MyOrg/DEP/ with public:
[ivy:findrevision] WARN:   java.lang.NullPointerException null
[ivy:findrevision]  public: no ivy file nor artifact found for MyOrg#DEP;latest.integration
Property "found.revision" has not been set
     [echo] Found revision: ${found.revision}

Еще раз спасибо за любые идеи,

Дэн.


person Dan    schedule 28.02.2014    source источник


Ответы (1)


Для справки в будущем, мне удалось решить эту проблему, переключившись на последнюю альфа-сборку Ivy 2.4. Кажется, это должно быть проблема с 2.3.0.

person Dan    schedule 14.03.2014