"POM for ...缺失,没有可用的依赖信息",即使它存在于Maven资源库中

Jos*_*z_2 20 java eclipse maven

问题:

即使我从Maven存储库复制了依赖项,依赖项也不会下载.

当我将鼠标悬停在Eclipse中的依赖项时,它会发出警告:" Maven Missing artifact org.raml:jaxrs-code-generator:jar:2.0.0".

当我尝试mvn installmvn compile它警告:" [WARNING] The POM for org.raml:jaxrs-code-generator:jar:2.0.0 is missing, no dependency information available".

尝试:

  • jar下载到~/.m2/repository/org/raml/jaxrs-code-generator/2.0.0文件夹中,然后在编辑器中刷新.

    • 当我installcompile它似乎忽略它.
  • 运行mvn -U.

    • install或相同compile.

深入:

    <dependency>
        <groupId>org.raml</groupId>
        <artifactId>jaxrs-code-generator</artifactId>
        <version>2.0.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)
  • 依赖存在Maven存储库中(版本也是正确的).

  • 使用Eclipse EE Neon 4.6.3,Apache Maven 3.3.9,Java 1.8.0_121.

  • 我没有settings.xml~/.m2文件夹中.

  • 我不使用本地或其他任何其他存储库.

dav*_*xxx 16

仔细阅读警告信息:

org.raml的pOM:jaxrs-code-generator:jar:2.0.0缺失,没有可用的依赖项信息

问题不是jar,而是丢失的pom.xml.
pom.xml列出了Maven在构建期间以及整个应用程序打包过程中提取的此jar所需的依赖项. 所以,你可能真的需要它.

请注意,这个问题当然可能发生在其他Maven依赖项中,并且要解决的想法始终是相同的.

Mule网站的文档非常清楚,除了一些相关的信息.


怎么解决 ?

1)快速解决方法:在互联网上寻找pom.xml神器

谷歌搜索工件ID,组ID及其版本通常提供有趣的结果:maven存储库链接下载它.
org.raml:jaxrs-code-generator:jar:2.0.0 依赖项的情况下,您可以pom.xml从Maven mule存储库下载:

https://repository.mulesoft.org/nexus/content/repositories/releases/org/raml/jaxrs-code-generator/2.0.0/

2)清理单个Maven项目的变通方法:在pom中添加存储库声明.

在您的情况下,添加Maven mule存储库:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    ...
    <repositories>
        <repository>
            <id>mulesoft-releases</id>
            <name>MuleSoft Repository</name>
            <url>http://repository.mulesoft.org/releases/</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>mulesoft-snapshots</id>
            <name>MuleSoft Snapshot Repository</name>
            <url>http://repository.mulesoft.org/snapshots/</url>
            <layout>default</layout>
        </repository>
    </repositories>
    ...
</project>
Run Code Online (Sandbox Code Playgroud)

3)清除任何Maven项目的变通方法:在您的.中添加存储库声明 settings.xml

 <profile> 
   <repositories>
    ...
    <repository>
      <id>mulesoft-releases</id>
      <name>MuleSoft Repository</name>
      <url>http://repository.mulesoft.org/releases/</url>
      <layout>default</layout>
    </repository>
    <repository>
      <id>mulesoft-snapshots</id>
      <name>MuleSoft Snapshot Repository</name>
      <url>http://repository.mulesoft.org/snapshots/</url>
      <layout>default</layout>
    </repository>
     ...
  </repositories>     
</profile>
Run Code Online (Sandbox Code Playgroud)

请注意,在极少数情况下,pom.xml声明依赖关系是无处可去的.因此,您必须确定工件是否需要依赖项.

  • 如果需要的话,为什么有人会在没有 pom 的情况下将存储库发布到公共存储库?我就是不明白。 (3认同)
  • 这不能解决pom.xml实际上存在的问题,但是maven声称不存在。 (3认同)
  • @Joker 来自文档:settings.xml 文件可能存在于两个位置: Maven 安装:${maven.home}/conf/settings.xml 用户安装:${user.home}/.m2/settings .xml (2认同)

ble*_*eju 13

我最近遇到了类似的问题。就我而言:

  1. 我从一些不太受欢迎的 Maven 存储库下载了一个工件

  2. 这个回购在今年消失了

  3. 现在构建失败,即使我的本地存储库中有这个工件及其 pom.xml

解决方法:

删除此工件所在的本地存储库中的_remote.repositories文件。现在项目构建。

  • 删除本地存储库中的“.remote.repositories”文件也解决了我的问题 (2认同)
  • @manikantanvsr 您应该在本地 Maven 存储库中下载依赖项的每个目录中找到此文件。例如,对于 commons-lang3 它将是`.m2/repository/org/apache/commons/commons-lang3/3.4/_remote.repositories` (2认同)

ser*_*inc 9

另一个有用的选项是重新加载依赖项

mvn dependency:resolve -U
Run Code Online (Sandbox Code Playgroud)