【问题标题】:How to make Maven resolver for Shrinkwrap work?如何使 Shrinkwrap 的 Maven 解析器工作?
【发布时间】:2015-01-06 21:15:20
【问题描述】:

我有这个代码:

@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 测试能够正常工作。

【问题讨论】:

    标签: java maven jboss-arquillian shrinkwrap


    【解决方案1】:

    您的错误背后的原因似乎很明显。您的代码缺少 restlet 工件的版本号。

    它应该看起来像:

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

    或者,您可以在 &lt;dependencyManagement&gt; 部分中指定版本,但您的错误消息告诉您,您也忘记了它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 2022-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多