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

问题描述 投票:13回答:2

问题:

即使我从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。 与installcompile相同。

深入:

    <dependency>
        <groupId>org.raml</groupId>
        <artifactId>jaxrs-code-generator</artifactId>
        <version>2.0.0</version>
    </dependency>
  • 依赖存在于Maven Repository中(版本也是正确的)。
  • 使用Eclipse有AA Neon 3.0.1,Apache Maven 3.0.1,Java 3.0.3。
  • 我在settings.xml文件夹中没有~/.m2
  • 我不使用本地或其他任何其他存储库。
java eclipse maven
2个回答
16
投票

仔细阅读警告信息:

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

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

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

The Mule website文件非常清楚,除了一些相关的信息。


How to solve ?

1)快速解决方法:在互联网上寻找工件的pom.xml

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

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>

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>

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


2
投票

您将需要将外部存储库添加到您的pom,因为这是使用Mulsoft-Release存储库而不是Maven Central

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

Dependency

Apache Maven - Setting up Multiple Repositories

© www.soinside.com 2019 - 2024. All rights reserved.