Apache Ant Ivy не может опубликовать артефакт в Artifactory - PullRequest
1 голос
/ 08 февраля 2012

Я использую Jenkins в качестве CI-сервера, а Apache Ivy используется для управления зависимостями проекта Android, а Artifactory является хранилищем, содержащим все артефакты.

В ivysettings.xml конфигурация выглядиткак показано ниже:

  <ibiblio name="test" m2compatible="true" 
    root="http://ip:8888/artifactory/libs-snapshot-local" 
    pattern="[organisation]/[module]/1.0/[artifact]-**1.0**-SNAPSHOT.[ext]">
  </ibiblio>

При сборке в Jenkins я сталкиваюсь с ошибкой:

BUILD FAILED
C:\.jenkins\workspace\test\build.xml:1381: impossible to publish artifacts for com.test#dummy;working@myserver: java.io.IOException: PUT operation to URL http://ip:8888/artifactory/libs-snapshot-local/com/test/dummy/1.0/project-1.0-SNAPSHOT.apk failed with status code 500: Failed to save resource 'libs-snapshot-local:com/test/dummy/1.0/project-1.0-SNAPSHOT.apk'.
    at org.apache.ivy.util.url.AbstractURLHandler.validatePutStatusCode(AbstractURLHandler.java:82)
    at org.apache.ivy.util.url.BasicURLHandler.upload(BasicURLHandler.java:225)
    at org.apache.ivy.util.url.URLHandlerDispatcher.upload(URLHandlerDispatcher.java:82)
    at org.apache.ivy.util.FileUtil.copy(FileUtil.java:148)
    at org.apache.ivy.plugins.repository.url.URLRepository.put(URLRepository.java:84)
    at org.apache.ivy.plugins.repository.AbstractRepository.put(AbstractRepository.java:130)
    at org.apache.ivy.plugins.resolver.RepositoryResolver.put(RepositoryResolver.java:234)
    at org.apache.ivy.plugins.resolver.RepositoryResolver.publish(RepositoryResolver.java:216)
    at org.apache.ivy.plugins.resolver.ChainResolver.publish(ChainResolver.java:244)
    at org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:281)
    at org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:260)
    at org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:172)
    at org.apache.ivy.Ivy.publish(Ivy.java:600)
    at org.apache.ivy.ant.IvyPublish.doExecute(IvyPublish.java:311)
    at org.apache.ivy.ant.IvyTask.execute(IvyTask.java:277)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.Main.runBuild(Main.java:809)
    at org.apache.tools.ant.Main.startAnt(Main.java:217)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Total time: 9 seconds
Finished: FAILURE

Однако, когда я изменяю подсвеченный ' 1.0 ' на '1', он успешно опубликован в Artifactory.Это похоже на точку "."не допускается.Или я что-то не так сделал?

Пожалуйста, сообщите.

1 Ответ

1 голос
/ 04 января 2016

Я даже не уверен, почему вы можете публиковать с ibiblio, он предположительно обрабатывает только разрешение зависимостей. Смотри: http://ant.apache.org/ivy/history/latest-milestone/resolver/ibiblio.html

вам нужен распознаватель URL для обработки публикации и правильного определения шаблона http://ant.apache.org/ivy/history/latest-milestone/resolver/url.html

, например

<url name="test" m2compatible="true" 
  <ivy pattern="http://ip:8888/artifactory/libs-snapshot-local/[organisation]/[module]/[revision]/ivy-[revision].xml" />
  <artifact pattern="http://ip:8888/artifactory/libs-snapshot-local/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>

похоже, что вы жестко закодировали версию, возможно, попробуйте использовать токен [revision]

...