Могу ли я использовать менеджер репозитория Maven вне Maven?

Я уже спрашивал в Список пользователей Maven, позвольте мне продублировать здесь.

Я пытаюсь создать приложение, которое будет загружать и использовать артефакты Maven за пределами Maven. Я думаю, что в этом случае разумнее всего было бы использовать уже существующие классы Maven. Может кто подскажет где искать?

Было бы неплохо, чтобы это работало так:

Repository rep = new Repository("~/.m2"); 
Artifact artifact = new Artifact("com.example", "foo", "1.0"); 
String path = rep.resolve(artifact); 
assert path.equals("~/.m2/repository/com/example/foo/1.0/foo.jar"); 

Я использую Мавен 3.


person yegor256    schedule 14.03.2011    source источник


Ответы (2)


Aether делает именно то, что мне нужно.

edit: несколько недель назад я создал инструмент с открытым исходным кодом, который упрощает взаимодействие с Aether: jcabi-aether. Теперь это так же просто, как (в плагине maven):

File repo = this.session.getLocalRepository().getBasedir();
Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
  new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"),
  JavaScopes.RUNTIME
);
person yegor256    schedule 14.03.2011

Вы проверили ivy, соответствует ли он вашим потребностям?

person Goibniu    schedule 14.03.2011