我希望有人能帮助我解决一个我正在挣扎的问题。

当我试图从终端构建我的项目时,我得到这个错误:

Failed to read artifact descriptor for com.morrislgn.merchandising.common:test-data-utils:jar:0.3b-SNAPSHOT: Could not find artifact com.morrislgn.merchandising:merchandising:pom:0.3b-SNAPSHOT

常见的。Test-data-utils jar由一个单独的项目创建,并在这个项目和另一个项目之间共享(另一个项目也没有构建,但这是另一个问题)。

我能够毫无问题地构建com.morrislgn.merchandising.common:test-data-utils,我可以看到它在我机器上的.m2本地存储库中的条目。我还在Eclipse中重新索引了我的存储库。

我的项目的POM有这样的条目:

<dependency>
    <groupId>com.morrislgn.merchandising.common</groupId>
    <artifactId>test-data-utils</artifactId>
    <version>0.3b-SNAPSHOT</version>
</dependency>

这对我来说似乎是正确的——在Eclipse中查看POM时,它也没有报告任何错误。

谁能告诉我这里我缺了什么或做错了什么?


当前回答

在我们的例子中,出现错误是因为在多模块Maven配置中的一些项目引用其他项目时,groupId重命名不正确。

我们有一个聚合器项目(billing-parent),有两个模块(billing-api, billing):

com.company.team:billing-parent
|-com.company.team:billing-api
|-com.company.team:billing

项目计费依赖于billing-api。在它的pom。xml中有:

<dependency>
    <groupId>com.company.team</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

我们决定将groupId从com.company.team重命名为com.company.team.billing。我们替换了父模块的pom.xml和两个模块的<parent>部分中的旧值。但是忘记更新上面的依赖项。因此,我们已经获得了计费项目引用旧的计费api工件的配置。最终,它喙构建计费模块后,一段时间的错误,如

[ERROR] Failed to execute goal on project billing: Could not resolve dependencies for project com.company.team.billing:billing:jar:3.5.1-SNAPSHOT: Failed to collect dependencies at com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to read artifact descriptor for com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to find <parent of the com.company.team:billing-parent project which is not available any more>

尽管billing-api模块构建时没有错误。

解决方案1:在依赖项中重命名groupId。

解决方案2:用${项目替换groupId。groupId}属性如下:

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

结论。 因此,如果你在多模块配置中遇到错误,我的建议是:彻底检查groupId和artifactId对邻居模块的依赖关系。

其他回答

我知道我来晚了,但我也有这个问题。我认为问题出在公司的防火墙上。我的解决方案是断开网络,连接到开放的无线网络,然后通过Eclipse强制更新。这就解决了一切问题。

与IntelliJ IDEA有同样的问题,并遵循工作。

转到文件 选择设置 选择构建、执行、部署 从下拉菜单中选择Build Tools 从下拉菜单中选择Maven 勾选“始终更新快照”复选框

你可以尝试mvn -U clean install

-U强制检查远程存储库上的更新版本和快照。

在我们的例子中,出现错误是因为在多模块Maven配置中的一些项目引用其他项目时,groupId重命名不正确。

我们有一个聚合器项目(billing-parent),有两个模块(billing-api, billing):

com.company.team:billing-parent
|-com.company.team:billing-api
|-com.company.team:billing

项目计费依赖于billing-api。在它的pom。xml中有:

<dependency>
    <groupId>com.company.team</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

我们决定将groupId从com.company.team重命名为com.company.team.billing。我们替换了父模块的pom.xml和两个模块的<parent>部分中的旧值。但是忘记更新上面的依赖项。因此,我们已经获得了计费项目引用旧的计费api工件的配置。最终,它喙构建计费模块后,一段时间的错误,如

[ERROR] Failed to execute goal on project billing: Could not resolve dependencies for project com.company.team.billing:billing:jar:3.5.1-SNAPSHOT: Failed to collect dependencies at com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to read artifact descriptor for com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to find <parent of the com.company.team:billing-parent project which is not available any more>

尽管billing-api模块构建时没有错误。

解决方案1:在依赖项中重命名groupId。

解决方案2:用${项目替换groupId。groupId}属性如下:

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

结论。 因此,如果你在多模块配置中遇到错误,我的建议是:彻底检查groupId和artifactId对邻居模块的依赖关系。

“读取工件描述符失败”问题通常表明maven存储库中依赖项的pom文件有问题。我建议您仔细检查pom文件的名称是否与maven期望的名称相同,并检查pom文件内容是否有效。