【问题标题】:pimp up a plain jar to be a maven jar with internal pom.xml for Artifactory将一个普通的罐子拉皮条成为一个带有内部 pom.xml 用于 Artifactory 的 maven 罐子
【发布时间】:2011-04-12 14:45:35
【问题描述】:

我需要使用 ant 生成的 xyz.jar。因此,缺少传递依赖。于是我有了想法,修改 xyz.jar 以添加内部 META-INF/maven/groupId/artifactId/pom.xml 和 pom.properties 文件。

当我将它部署到 Artifactory 时,它忽略了它们并生成了它自己的 pom.xml,没有依赖项。

有什么关系,Artifactory 将 pom.xml 部署在与 xyz.jar 文件相同的文件夹中?

在这一切上浪费了太多时间......

【问题讨论】:

  • 为什么不使用 Ivy 来处理依赖关系,或者改用 Maven。
  • 我的项目使用maven,需要xyz.jar,它是用ant创建的。我想告诉 artifactory/maven,哪些是 xyz.jer 需要的传递依赖项,而不是将传递依赖项添加到我项目的 pom.xml
  • 您必须为您的 xyz.jar 创建带有依赖项的 pom,否则它将无法工作。您可以手动创建这个 pom 并添加到您的 Ant 项目中,并且在部署期间您也可以添加 pom。

标签: java maven-2 pom.xml artifactory


【解决方案1】:

Artifactory 可能会跳过内部 POM 的部署,因为它无法从存档中读取 POM 的物理大小(出于历史原因这样做);您可以通过查看日志中的警告消息来验证这一点:

“在 zip 中找到大小为 -1 的 pom.xml 文件。忽略”

如果您已经创建了定制的 POM 文件,您可以将其内容粘贴到工件部署器的 POM 内容编辑器中或单独部署它;虽然第一个选项会给您自动检测 JAR 文件的部署坐标的好处。

【讨论】:

  • 我查看了 tomcat 日志文件,但没有找到与您在此处提到的条目相似的条目。 Mayby 我稍后会试一试,但我正处于热门的“项目结束阶段”,只是很高兴让它在此刻运行....
【解决方案2】:

将它的依赖项添加到您的 pom 中而不是装配第三方库以使用 maven 可能是一个更好的主意。

话虽如此,请确保您的 pom.xml 是有效的 XML(大多数现代 IDE 可以为您验证 xml)并确保您的属性文件包含版本、组 ID 和工件 ID。

Artifactory 改变了它在不同版本中处理 POM 生成的方式,因此,根据您的版本,您可能需要在部署时关闭某种生成 pom 选项。我认为他们在较新的版本中有一个部署时间 pom 编辑器或类似的东西。

【讨论】:

  • 这是一个内部图书馆,所以还不错。当我有一天必须采用它时,也许我会将它迁移到一个 maven 设置...
【解决方案3】:

修改创建 xyz.jar 的 ant 以生成可运行的 jar - jar 应该将其所有依赖项打包在里面。(在您的 xyz 项目中创建一个 lib 目录并将所有 xyz 依赖项放在该目录中,然后导出你的项目与里面打包的所有库一起 jar) 可以在 here 找到如何创建 ant 脚本的良好分步示例。

祝你好运!

【讨论】:

    猜你喜欢
    • 2012-12-28
    • 2019-03-03
    • 2013-06-19
    • 1970-01-01
    • 2013-04-19
    • 2016-04-14
    • 1970-01-01
    相关资源
    最近更新 更多