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

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

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时,它也没有报告任何错误。

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


当前回答

我有一个项目

 A/
 |--a1
 |--a2

现在我们组织里还有一个项目

 B/
 |--b1
 |--b2
 |--b3

(每个模块a1, b1等和父项目A, B都有自己的pom.xml,根据父和子的标准maven规则)

两个项目都是在我的本地eclipse上(从SVN)签出的。我正在积极研究A。

我了解到B中有一个很好的通用功能(b4),我需要使用它。

 B/
 |--b1
 |--b2
 |--b3
 |--b4 (NEW)

b4的开发人员已经将这个b4模块部署在我们组织的存储库中。我包含了我的模块的POM的依赖,即a2的POM .xml。Eclipse从repo下载了所需的工件,我可以导入其中的类。

Now issue starts... I needed to check the source code of b4 for some purpose and as I already had B checked out on my local eclipse I updated it from SVN and checked out module b4. I also ran pom.xml of module b4 with targets like clean, package etc. After some time when I finishedd my coding I needed to create a JAR of my module a2. I ran "package" on a2's pom.xml and BAM!! errors n errors for a2 module.. These errors were also not very user friendly. Only thing is there was b4's name for sure in logs.

解决方案: 在尝试了许多解决方案许多小时后,我从控制台在我的B的项目目录(即在../codebase/B)中运行“mvn -U clean install”。因为B是父模块,所以clean install命令运行了所有模块,包括b4,并且运行成功。在这之后,我运行“mvn -U清洁安装”为我的父项目,这是a和工作!A2模块编译、安装、(之后打包)成功。

这里重要的一点是,如果b4在您的工作空间中,不要只安装b4。你将需要清洁安装完成b。我在阅读Zuill的回答后想出了这个解决方案

编辑:这里还要注意的一件事是,如果我没有在本地环境中检出B项目,那么这个问题可能不会发生在我身上。我倾向于认为发生这种情况是因为我在当地的工作场所检查了B。

其他回答

对我来说,这与设置内部的“User setting .xml”有关

Window > preferences > Maven > User Settings > and then browsing to the user Settings inside the { maven unarchived directory / }/apache-maven-2.2.1/conf/settings.xml . 

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

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

您提到了两个不同的groupid, com.morrislgn.merchandising.common和com.johnlewis.jec.webpim.common。也许这就是问题所在。

我在eclipse中遇到了同样的问题,其中maven构建命令行工作得很好,但是 试试这个

进入.m2/repository并擦除相关目录 在eclipse中运行更新maven依赖项

错误消失....为什么我的mvn命令行工作与这些目录和eclipse .m2eclipse不能,我不知道,这有点糟糕。我的项目现在又在eclipse中工作了。

我刚开始使用STS Eclipse,第一次使用Maven。我设置的项目已经有了自己的settings.xml。如果是这种情况,您将需要在运行配置中更新settings.xml文件。

右键单击pom.xml并“运行为”->“运行配置…” 这里写着“用户设置”,点击文件按钮并添加settings.xml。 我认为这是特定于您的项目,但我的“目标”设置为“干净安装”,我检查了“跳过测试”。