с использованием диспетчера зависимостей IVY программно

мне нужна помощь в использовании IVY в качестве диспетчера зависимостей
моему приложению нужно загружать плагины во время РАБОТЫ
означает, что во время работы основного приложения пользователь может запросить новый плагин
и установите их,
Я хочу управлять всеми установленными надстройками, используя базовую базу данных приложения.

я хочу получить pom от моего сервера плагинов (или другого дескриптора),
и попросите IVY рассказать мне, каковы зависимости, ИЛИ позвольте IVY установить плагин и зависимости, на основе текущего состояния моего приложения.

(что у меня есть прямо сейчас,
1. jar используется основным приложением
2.jar используется текущими установленными надстройками)

я хочу, чтобы каждый подключаемый модуль имел независимый каталог
в какой-то папке, в которой находится мое приложение (не совместно используемое)

, я не знаю, с чего начать
Я заметил, что для этого нет программного API

. Я обнаружил одну ссылку в сети того, кто пробовал нечто подобное
но похоже, что код не завершен или какая-то переменная отсутствует и я не знаю, как завершить остальное, потому что озеро документации по программированию
http://www.mail-archive.com/ ivy-user@ant.apache.org /msg03228.html (где появилась переменная "art" .....)

не могли бы вы мне помочь ... Спасибо всем

ОБНОВЛЕНИЕ

хорошо, это то, что я сейчас пытаюсь. Я получаю сообщение об ошибке, плюс я не знаю, как определить свой сервер архивирования

      IvySettings settings = new IvySettings();

     settings.setDefaultIvyUserDir(new File("D:/programming/eclipse_projects/ivyTest/repo/"));

      settings.setDefaultCache(new File("D:/programming/eclipse_projects/ivyTest/repo/cache/"));
      settings.setDefaultCacheArtifactPattern("[module]/[revision]/[module]-[revision](-[classifier]");

  Ivy ivy = Ivy.newInstance(settings);

  ivy.getLoggerEngine().pushLogger(new DefaultMessageLogger(Message.MSG_VERBOSE));

  ModuleDescriptor md =  PomModuleDescriptorParser.getInstance().parseDescriptor(new IvySettings(), new File("src/movies.pom").toURL(), true);

  RetrieveOptions retriveOptions = new RetrieveOptions();
  retriveOptions.setUseOrigin(true);
  retriveOptions.setConfs(md.getConfigurationsNames());
  ivy.retrieve(md.getModuleRevisionId(), "lib/[conf]/[artifact].[ext]", etriveOptions);

это ошибка, которую я получаю

:: loading settings :: url = jar:file:/D:/programming/eclipse_projects/ivyTest/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
:: retrieving :: org.jtpc#movies
    checkUpToDate=true
    confs: [default, master, compile, provided, runtime, test, system, sources, javadoc, optional]
java.lang.RuntimeException: problem during retrieve of org.jtpc#movies: java.lang.IllegalStateException: Report file 'D:\programming\eclipse_projects\ivyTest\repo\cache\org.jtpc-movies-default.xml' does not exist.
    at org.apache.ivy.core.retrieve.RetrieveEngine.retrieve(RetrieveEngine.java:206)
    at org.apache.ivy.Ivy.retrieve(Ivy.java:540)
    at Test.main(Test.java:52)
Caused by: java.lang.IllegalStateException: Report file 'D:\programming\eclipse_projects\ivyTest\repo\cache\org.jtpc-movies-default.xml' does not exist.
    at org.apache.ivy.plugins.report.XmlReportParser.parse(XmlReportParser.java:294)
    at org.apache.ivy.core.retrieve.RetrieveEngine.determineArtifactsToCopy(RetrieveEngine.java:288)
    at org.apache.ivy.core.retrieve.RetrieveEngine.retrieve(RetrieveEngine.java:104)
    ... 2 more

5
задан shay 21 October 2010 в 05:58
поделиться