我有一个maven项目,它具有从远程Nexus存储库获取的依赖项.我相信依赖关系不是用maven构建的,只是上传了一个准系统POM文件.服务器上的布局看起来很好,所以它可能与maven一起部署.

当maven将依赖项下载到我的本地存储库时,它会下载jar文件,但不会获得POM.在构建时,会发出警告,指出无法找到POM,并且没有可用的依赖项信息.我实际上并没有直接使用它的任何代码(它实际上是一个传递依赖),因此构建成功完成.

当我尝试为我的项目执行站点生成时,会出现真正的问题.尝试生成依赖关系图报告的部分失败,因为它无法找到要使用此依赖关系的POM.

我无法弄清楚为什么我没有下载POM,当它的jar文件下载得很好.

该特定依赖项的POM文件看起来像这样(你可以看到为什么我不认为它是用maven构建的:))

4.0.0

com.company.component

my-artifact

1.0.1

你会注意到root< project> element不包含任何名称空间或架构信息.这有关系吗?难道Nexus不承认它是POM吗?除了一些小的句法字符丢失或错误的可能性,这是我目前的思路……请不要让它影响你可能有的任何想法! 🙂

此外,在进行故障排除时,我已将远程POM文件的内容粘贴到我本地.m2 repo中的正确文件位置.当我这样做时,一切都很好.但这不是一个可接受的修复,因为我们需要在我们的CI构建服务器上完成构建.

任何帮助/建议非常感谢!

编辑:

我设法暂时解决了我的实际问题,但这里的陌生感仍然存在.我通过从我的pom中的依赖项显式排除依赖于此的东西解决了这个问题(故障dep至少是两步之遥,我没有使用任何使用拉动它的东西):

com.company.utility

shared-utility

1.2.3

com.company.common.component

thing-that-puls-in-bad-artifact

我用以下POM创建了一个虚拟项目来证明它:

4.0.0

com.company.project

my-project

0.0.1-SNAPSHOT

com.company.component

bad-artifact

1.0.1

现在在〜/ .m2 / repository / com / company / compnent / bad-artifact / 1.0.1 /中,我得到了:

_remote.repositories

bad-artifact-1.0.1.jar

bad-artifact-1.0.1.jar.sha1

bad-artifact-1.0.1.pom.lastUpdated

没有实际的POM文件.