Как заставить работать преобразователь Maven для Shrinkwrap?

У меня есть этот код:

@Deployment(name = "default")
public static WebArchive getTestArchive() {
    File[] file = Maven.resolver().loadPomFromFile("../pom.xml")
            .importCompileAndRuntimeDependencies()
            .resolve("org.restlet.gae:org.restlet").withTransitivity().asFile();
    System.out.println("FILE>>>>>>>>" + file.toString());
    return ShrinkWrap.create(WebArchive.class, "simple.war")
            .addClass(org.restlet.ext.servlet.ServerServlet.class)
            .setWebXML("web.xml")
            .addAsWebInfResource("appengine-web.xml")
            .addAsWebInfResource("logging.properties");
}

Однако при запуске теста выдается следующая ошибка:

Caused by: org.jboss.shrinkwrap.resolver.api.ResolutionException: Unable to get version for dependency specified by org.restlet.gae:org.restlet:compile, it was not provided in neither <dependencyManagement> nor <dependencies> sections.
    at org.jboss.shrinkwrap.resolver.impl.maven.task.ResolveVersionFromMetadataTask.execute(ResolveVersionFromMetadataTask.java:91)
    at org.jboss.shrinkwrap.resolver.impl.maven.PomEquippedResolveStageBaseImpl.resolveVersion(PomEquippedResolveStageBaseImpl.java:85)
    at org.jboss.shrinkwrap.resolver.impl.maven.ResolveStageBaseImpl.resolveDependency(ResolveStageBaseImpl.java:189)
    at org.jboss.shrinkwrap.resolver.impl.maven.ResolveStageBaseImpl.resolveDependency(ResolveStageBaseImpl.java:184)
    at org.jboss.shrinkwrap.resolver.impl.maven.ResolveStageBaseImpl.resolve(ResolveStageBaseImpl.java:78)
    at org.jboss.shrinkwrap.resolver.impl.maven.ResolveStageBaseImpl.resolve(ResolveStageBaseImpl.java:43)
    ... 58 more

Моя цель состоит в том, чтобы все зависимости POM были разрешены, чтобы (надеюсь) тест Restlet arquillian работал.


person quarks    schedule 06.01.2015    source источник


Ответы (1)


Причина вашей ошибки кажется довольно очевидной. В вашем коде отсутствует номер версии артефакта рестлета.

Это должно выглядеть так:

 File[] file = Maven.resolver().loadPomFromFile("../pom.xml")
            .importCompileAndRuntimeDependencies()
            .resolve("org.restlet.gae:org.restlet:2.3.0")  // Notice version number
            .withTransitivity().asFile();

В качестве альтернативы вы можете указать версию внутри секции <dependencyManagement>, но ваше сообщение об ошибке говорит о том, что вы и об этом забыли.

person G. Demecki    schedule 07.01.2015