找不到我的maven文物

时间:2016-08-20 17:21:55

标签: maven m2eclipse

我在eclipse工作,我遇到一个问题,我不能import我的个人java库。

我创建了库并将它们“安装”到我的本地maven仓库中(使用mvn install)。这创建了一个子目录,该子目录与我运行命令时POM文件中的“版本”名称相关。这看起来很好。

所以在这个目录中有通常的jar文件和其他东西。

当我发布此文件时,我手动更改了POM中版本的名称。从0.0.1-SNAPSHOT到0.0.1-RELEASE

这看起来像我预期的那样有效。

但是我似乎无法找到导入新版本的jar。

在eclipse中使用maven repositories浏览器,我可以看到新工件位于“本地”存储库中。

我尝试在以下方法中添加依赖项:

  • 选择主项目 - > Maven - >添加依赖。

这会将依赖项详细信息添加到pom中,但类型值详细信息为<type>pom.lastUpdated</type>

  • 选择项目pom.xml文件 - &gt; Maven - &gt;添加依赖。

这次0.0.1-RELEASE的工件是greyed out我可以选择它,但我猜实际上什么都没发生。 它可以选择原始的0.0.1-SNAPSHOT,如果我使用它,我在pom中没有<type>细节。

我不明白为什么RELEASE和SNAPSHOT工件存在差异,因为它们都以相同的方式生成,并且很明显它们都在浏览器中可见,磁盘上目录的内容是相同。文件名和内容相同,只有RELEASE或SNAPSHOT这个词。

我知道我可以简单地将RELEASE jar添加到我的构建路径中,但如果我打算使用maven(或者我需要这样做),这似乎是一个荒谬的事情。

我不想使用外部仓库来存储我的工件,而且我不太热衷于在本地机器上安装nexus(或类似设备)的麻烦(因为我遇到了麻烦)它在过去)。

我缺少什么,因为我可以让我的maven项目查看我的本地存储库及其所有工件。

提前致谢。

大卫

ps我已经尝试了诸如mvn dependency:purge-local-repository这样的东西,这些东西肯定会引入/更新所有本地jar依赖项。

1 个答案:

答案 0 :(得分:0)

所以我设法解决了我的问题。

因此,这种解决方案很荒谬,并且打破了maven的所有目的。

所以我发现(从cli运行maven)我试图使用的项目的父项中有错误。

父母错过了与scm插件的直接链接(版本错误)。

一旦我解决了这个问题,我就回到了子项目,并从父母遗漏的东西中得到了很多错误。 基本上它不是“看到&#39;所有log4j依赖项。

解决方案(确实非解决方案)。 将所有log4j依赖项添加到子项目。 在SCM和surefire测试插件中编辑(由于缺少junit,它也开始使测试代码失败)。

所以这很棒。

我必须在log4j和我/ sub / child项目的pom.xml文件中定义所有依赖项。 我还需要在父母的pom中定义它们。

因为它仍然拒绝在我的新项目中运行测试(使用上面作为依赖项),并拒绝查找log4j。然后我决定将所有这些添加为我当前项目的依赖项。

大。 我认为maven的全部意义在于我可以在我使用的日志库中定义我对log4j的依赖(这是依赖关系),然后它会自动地&#39;从这种依赖中拉出所有必需的东西。

显然不是。

如开头所述。这不是一个回答这是一个疯狂的工作。

我使用的日志库应该能够在特定的log4j版本上定义自己的需求(例如从log4j移动到log4j2),然后当我将其作为maven依赖项包含时,对所需依赖项的任何更改都应该是自动看到。

但是否:我还必须在我的其他项目中导入对log4j的依赖。所以现在如果我将我的日志库从log4j更新到log4j2,我需要转到我使用这个库的所有项目并更新他们的pom以确保我有正确版本的log4j。

似乎maven的全部内容刚刚丢失!

有人可以告诉我我哪里出错!

大卫。