maven - ReSTLet RAML 扩展错误

标签 maven restlet-2.0 raml

我有一个使用 ReSTLet 2.3.1 (JSE) 的项目。我们按照 ReSTLet 网站使用 Maven:

<properties>
  <restlet-version>2.3.1</restlet-version>
</properties>

<repositories>
    <repository>
      <id>maven-restlet</id>
      <name>Public online Restlet repository</name>
      <url>http://maven.restlet.com</url>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>org.restlet.jse</groupId>
      <artifactId>org.restlet</artifactId>
      <version>${restlet-version}</version>
    </dependency>
    <dependency>
      <groupId>org.restlet.jse</groupId>
      <artifactId>org.restlet.ext.jackson</artifactId>
      <version>${restlet-version}</version>
    </dependency>
    <dependency>
      <groupId>org.restlet.jse</groupId>
      <artifactId>org.restlet.ext.jetty</artifactId>
      <version>${restlet-version}</version>
    </dependency>
</dependencies>

这一切都工作正常,但是当我尝试添加 RAML 扩展时:

<dependency>
  <groupId>org.restlet.jse</groupId>
  <artifactId>org.restlet.ext.raml</artifactId>
  <version>${restlet-version}</version>
</dependency>

我收到以下错误:

ArtifactDescriptorException: Failed to read artifact descriptor for org.raml:raml-parser:jar:0.8.7: 
ArtifactResolutionException: Failure to transfer org.raml:raml-parser:pom:0.8.7 from http://download.java.net/maven/1 was cached in the local repository, resolution will not be reattempted until the update interval of maven1-java has elapsed or updates are forced. 
Original error: Could not transfer artifact org.raml:raml-parser:pom:0.8.7 from/to maven1-java (http://download.java.net/maven/1): No connector available to access repository maven1-java (http://download.java.net/maven/1) of type legacy using the available factories AetherRepositoryConnectorFactory, WagonRepositoryConnectorFactory

最佳答案

这里的问题是 org.reSTLet.jse:org.reSTLet.ext.raml Artifact 依赖于 org.raml:raml-parser:0.8.7 神器。不幸的是,这个 Artifact 在您配置 Maven 使用的任何存储库中都不可用(在 Maven Central 中,它仅在版本 0.8.11 中可用)。

您需要的版本可以在 Mulesoft maven 存储库中找到: http://repository.mulesoft.org/releases/

将以下存储库定义添加到您的 pom 应该可以解决您的问题:

<repository>
    <id>mulesoft-releases</id>
    <name>MuleSoft Repository</name>
    <url>http://repository.mulesoft.org/releases/</url>
    <layout>default</layout>
</repository>

更新

如果,正如 David 建议的那样,您想使用 0.8.11 版本,那么您可以简单地修改依赖项,如下所示,而不是添加 Mulesoft 存储库:

<dependencies>
    <dependency>
        <groupId>org.restlet.jse</groupId>
        <artifactId>org.restlet.ext.raml</artifactId>
        <version>${restlet-version}</version>
        <exclusions>
            <!-- exclude transitive dependency (version 0.8.7) -->
            <exclusion>
                <groupId>org.raml</groupId>
                <artifactId>raml-parser</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- explicitly define dependency to version 0.8.11 -->
    <dependency>
        <groupId>org.raml</groupId>
        <artifactId>raml-parser</artifactId>
        <version>0.8.11</version>
    </dependency>

    <!-- other dependencies -->
</dependencies>

关于maven - ReSTLet RAML 扩展错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30321302/

相关文章:

java - 即使没有(公共(public))Javadoc,如何强制使用 javadoc jar?

java - 使用 Maven 连接多个独立的 Spring 应用程序

java - 如何打包我的 Android ReSTLet 服务器所需的静态文件?

swagger - 在 Swagger 或 RAML 中记录基于消息的 API

rest - Swagger/RAML(或任何类似的 REST API 规范)是否支持 REST 异步客户端回调?

maven - 不可解决的父 POM 问题

java - 如何在 Maven 3 插件中获取依赖树?

java - 重定向所有 URL 以在 App Engine Java servlet 中返回 index.html

java - OSGI中的ReSTLet找不到com/sun/net/httpserver/HttpHandler

node.js - 写一个文件保持制表符和 EOL