<name>的POM无效,传递依赖(如果有)将不可用

Are*_*rte 35 java maven

这个问题已经过时,不再相关.我已经转移到Gradle进行项目构建,无法再验证答案是否有效.

我遇到了Maven的一些问题.我先来描述一下我的项目设置:

Framework
|  -- Apache Commons Math 3.0
|  -- Bouncy Castle 1.5
|  -- etc.. (lots more)
|________
|        Client
|        | -- GUI libraries
|        | -- etc.
|
|________
         Server
         | -- Server Libraries
         | -- etc.
Run Code Online (Sandbox Code Playgroud)

所以基本上我有一个框架,其中包含大多数依赖项,然后是两个项目,"服务器"和"客户端",它们包含自己的BUT,框架也是一个依赖项(作为Framework的一个模块).我将Framework项目安装到我的本地存储库中,我的项目都可以看到Framework-Native代码(也就是我自己的逻辑).但是,他们似乎无法使用框架项目的任何依赖项.在尝试构建任何"子"项目时,我得到了这个:

Invalid POM for de.r2soft.empires.framework:Framework:jar:Alpha-1.2, 
transitive dependencies (if any) will not be available, 
enable debug logging for more details 
Run Code Online (Sandbox Code Playgroud)

我试图找到这背后的原因(或更好的解决方案),但没有发现任何解决我的问题.希望有人可以提供帮助.我的maven版本似乎是3.2.1(这就是-version告诉我的反正)

这是我的framework-pom.xml和pastebin上的client-pom.xml:

框架:http://pastebin.com/cceZECaT

客户:http://pastebin.com/1Cuxve5F

感谢帮助.

Omr*_*tor 26

其中一个原因是当您依赖父pom过时的项目时.如果您在不安装/部署父pom的情况下更新父pom,通常会发生这种情况.

要查看是否是这种情况,只需运行mvn dependency:tree -X并搜索确切的错误.它会提到它错过了你知道的在父pom中的东西,而不是你所依赖的神器(例如jar版本).

修复非常简单:使用mvn install -N并重新尝试安装父pom

  • -N 开关有什么作用? (3认同)
  • -N 将构建一个项目而不构建它的子模块。因此,在“mvn install -N”的情况下,您将安装父pom,而无需尝试构建它的子项(从而避免循环依赖) (2认同)

小智 17

我有一个类似的错误,在我的情况下删除本地存储库中的所有相关工件是解决方法...


小智 8

删除 .m2 中的存储库文件夹并启动 mvn clean install。

让我们了解结果并祝你好运

  • 这为我做到了。有时显然会在下载到本地 .m2 存储库时出现损坏的文件 (2认同)

tma*_*wen 2

在运行客户项目之前,本地存储库中的框架工件可用,因为两个项目之间没有耦合(客户端工件不是您的框架项目的)。installmodule

因此,要解决该问题,您应该mvn installFramework项目上运行,以便将打包的 jar 复制到本地存储库。然后,当您在客户端项目上运行某些 Maven 阶段时,就由 Maven 来发现和找到它。

要在组织之间共享您的工件,您应该将您的工件部署(上传)到 Nexus 托管镜像。