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

时间:2017-08-17 08:48:59

标签: java eclipse maven

问题:

即使我从Maven资源库中复制了依赖项,依赖项也不会下载。

当我将鼠标悬停在Eclipse中的依赖项时,它会发出警告:“item”。

当我尝试'innerMaven Missing artifact org.raml:jaxrs-code-generator:jar:2.0.0时,它会发出警告:“mvn install”。

尝试:

  • jar下载到mvn compile文件夹,然后在编辑器中刷新。

    • 当我[WARNING] The POM for org.raml:jaxrs-code-generator:jar:2.0.0 is missing, no dependency information available~/.m2/repository/org/raml/jaxrs-code-generator/2.0.0时,它似乎忽略了它。
  • 正在运行install

    • compilemvn -U相同。

深入:

install
  • Maven Repository中的依赖存在(版本也正确)。

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

  • compile文件夹中没有 <dependency> <groupId>org.raml</groupId> <artifactId>jaxrs-code-generator</artifactId> <version>2.0.0</version> </dependency>

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

8 个答案:

答案 0 :(得分:11)

仔细阅读警告信息:

  

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

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

请注意,其他Maven依赖项当然可能会出现此问题,并且要解决的问题始终相同。

除了与。

相关的一些信息之外,

The Mule website非常清楚

如何解决?

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

通过Google搜索工件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无处可去。因此,您必须确定工件是否需要依赖项。

答案 1 :(得分:4)

我最近有一个类似的问题。就我而言:

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

  2. 此回购在今年消失了

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

解决方法:

在您的本地仓库中删除 .remote.repositories 文件。现在,项目开始构建。

答案 2 :(得分: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

答案 3 :(得分:1)

这是我的解决方案,可能会有所帮助 我使用IntelliJ IDE。文件->设置-> Maven->导入 将导入程序的JDK更改为1.8(您可以更改为更低,更高)

答案 4 :(得分:1)

问题不在于 jar 文件。 Maven 无法获取正确的元数据。

删除 _maven.repositories 或 _remote.repositories(其中一个文件将在那里)文件并重新构建。文件位于 .m2/repository/path/to/your/repo/

答案 5 :(得分:0)

就我而言,我使用的是Jade,而我使用的是HTTP存储库URL。将网址更改为HTTPS对我有用。

答案 6 :(得分:0)

在我的情况下,原因是因为远程回购工件(非中央)在.pom文件中具有来自Maven Central的依赖关系,而在mvn的旧版本中(早于3.6.0) )。因此,它尝试检查远程仓库.pom中提到的Maven Central工件,以查找我添加到依赖项中的特定工件,并在幕后面对Maven Central http访问问题(我相信与此处所述相同) :Maven dependencies are failing with a 501 error-这是默认情况下使用https访问Maven Central并禁止http访问)。

使用更新的Maven(从3.1到3.6.0)使其使用https来检查远程存储库的.pom文件中提到的Maven Central存储库依赖关系,而我不再面对这个问题。

答案 7 :(得分:0)

如果POM缺少警告是关于项目的自身模块的,则原因是您试图从子模块目录中错误地进行构建。您需要从项目的根目录运行build and install命令。