首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使Maven解析器为Shrinkwrap工作?

如何使Maven解析器为Shrinkwrap工作?
EN

Stack Overflow用户
提问于 2015-01-06 21:15:20
回答 1查看 2.8K关注 0票数 1

我有这样的代码:

代码语言:javascript
复制
@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");
}

但是,当测试运行时,它会抛出以下错误:

代码语言:javascript
复制
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测试能够工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-07 07:20:24

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

看起来应该是:

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27807295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档