2

我的问题很“简单”,但直到现在我才找到解决方案:

我有2个项目。

  • 在特定配置文件的帮助下,使用分类器(称为 dev 或 pro)构建的项目 A
  • 依赖于 A的项目 B (使用分类器 dev 或 pro)

  • 我使用分类器(dev)在 A 上执行安装目标

  • 我用另一个分类器( pro重新执行安装目标

然后我编译 B 项目(并将依赖项放在 A 中,使用分类器 DEV)

它运作良好。


但是当我对artifactory (goal deploy) 做同样的事情时,它不起作用 (并且存储库被配置为“唯一”)

它不工作,因为神器?maven依赖?正在尝试使用分类器 dev最新时间​​戳下载 A,无论是什么的内部版本号

但是这个“逻辑”是错误的,因为最新的时间戳对 A 分类器 pro 有效!!!

我阅读了本地存储库和工件存储库之间的 metadata.xml。有类似的(但不完全相同)

我错了什么?多谢你们!

  • Maven版本:3.03
  • 神器版本:2.3.4.1
4

1 回答 1

5

这可能是因为在编写此答案时,Artifactory 生成 Maven 2 类型的元数据,与 Maven 3 生成的较新类型相反,它没有为每个分类器\类型指定单独的“最新版本”人工制品。

也就是说,虽然 Maven 2 元数据指定了最新的构建和已知历史:

<?xml version="1.0" encoding="UTF-8"?>
    <metadata>
      <groupId>org.jfrog.test</groupId>
      <artifactId>multi1</artifactId>
      <version>2.1-SNAPSHOT</version>
      <versioning>
        <snapshot>
          <timestamp>20110928.112713</timestamp>
          <buildNumber>14</buildNumber>
        </snapshot>
        <lastUpdated>20110928112718</lastUpdated>
      </versioning>
    </metadata>

Maven 3 指定每个工件类型和分类器的最新构建:

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>org.jfrog.test</groupId>
  <artifactId>multi1</artifactId>
  <version>2.1-SNAPSHOT</version>
  <versioning>
    <snapshot>
      <timestamp>20110928.112713</timestamp>
      <buildNumber>14</buildNumber>
    </snapshot>
    <lastUpdated>20110928112718</lastUpdated>
    <snapshotVersions>
      <snapshotVersion>
        <classifier>tests</classifier>
        <extension>jar</extension>
        <value>2.1-20110928.112713-14</value>
        <updated>20110928112713</updated>
      </snapshotVersion>
      <snapshotVersion>
        <extension>pom</extension>
        <value>2.1-20110928.112713-14</value>
        <updated>20110928112713</updated>
      </snapshotVersion>
      ...
    </snapshotVersions>
  </versioning>
</metadata>

目前计划在 Artifactory 的下一个版本 (2.3.5) 中支持 Maven 3 元数据生成。
在此之前,我只能建议您生成具有不同工件 ID 的两个工件。

于 2011-10-02T09:07:06.450 回答