我需要使用 ant 生成的 xyz.jar。因此,缺少传递依赖。所以我有了想法,修改 xyz.jar 以添加内部 META-INF/maven/groupId/artifactId/pom.xml 和 pom.properties 文件。
当我将它部署到 Artifactory 时,它忽略了它们并生成了它自己的 pom.xml 没有依赖项。
有什么关系呢,Artifactory 将 pom.xml 部署在与 xyz.jar 文件相同的文件夹中?
在这一切上浪费了太多时间......
我需要使用 ant 生成的 xyz.jar。因此,缺少传递依赖。所以我有了想法,修改 xyz.jar 以添加内部 META-INF/maven/groupId/artifactId/pom.xml 和 pom.properties 文件。
当我将它部署到 Artifactory 时,它忽略了它们并生成了它自己的 pom.xml 没有依赖项。
有什么关系呢,Artifactory 将 pom.xml 部署在与 xyz.jar 文件相同的文件夹中?
在这一切上浪费了太多时间......
Artifactory 可能会跳过内部 POM 的部署,因为它无法从存档中读取 POM 的物理大小(出于历史原因这样做);您可以通过查看日志中的警告消息来验证这一点:
“在 zip 中找到大小为 -1 的 pom.xml 文件。忽略”
如果您已经创建了定制的 POM 文件,您可以将其内容粘贴到工件部署器的 POM 内容编辑器中或单独部署它;虽然第一个选项将为您提供自动检测 JAR 文件的部署坐标的好处。
修改创建 xyz.jar 的 ant 以生成可运行的 jar - jar 应将其所有依赖项打包在里面。(在您的 xyz 项目中创建一个 lib 目录并将所有 xyz 依赖项放在此目录中,然后将您的项目导出到jar 与所有的库打包在里面)可以在这里找到如何创建 ant 脚本的良好分步示例。
祝你好运!
将它的依赖项添加到您的 pom 中而不是装配第三方库以使用 maven 可能是一个更好的主意。
话虽如此,请确保您的 pom.xml 是有效的 XML(大多数现代 IDE 可以为您验证 xml)并确保您的属性文件包含版本、组 ID 和工件 ID。
Artifactory 改变了它在不同版本中处理 POM 生成的方式,因此,根据您的版本,您可能有某种生成 pom 选项,您必须在部署时将其关闭。我认为他们在较新的版本中有一个部署时间 pom 编辑器或类似的东西。