【问题标题】:Use a maven repo which does not have pom files使用没有 pom 文件的 maven repo
【发布时间】:2018-07-03 12:16:21
【问题描述】:

我们有一个大型自定义工件存储库,供我们旧的内部 ant 构建使用。

它以与 Maven 存储库相同的方式存储 jar。即

http://repo/root/<group>/<artifact>/<version>/<artifact>-<version>.jar

但是,这个存储库不_不_包含 pom 文件。只是 jars 和 src jars。

我们现在正在迁移大量项目以使用 maven/gradle,这些项目使用我们拥有的 Artifactory 安装。但是这些项目仍然对存储在旧存储库中的工件有很多依赖。

我想知道是否有人知道使用 maven/gradle 访问这种旧式 repo(没有 pom)的方法?

我们可以合成并插入一大堆简单的 pom,它们只有 group/artifact/version 等,没有依赖关系。但想知道是否有更简单的方法。

毕竟,组/工件/版本在路径本身。 pom 从不包含依赖项,因此在这种情况下,pom 不会(据我所知)提供任何其他信息。

任何建议/帮助将不胜感激。

【问题讨论】:

    标签: maven gradle artifactory


    【解决方案1】:

    当您将项目转换为 Maven 时,您需要触及依赖定义。您需要用 Maven 坐标替换旧的、基于文件的访问。

    因此,我建议如下(我们做了一些非常相似的事情,只是使用 Windows 网络驱动器而不是基于 http 的存储库):

    • 编写一个脚本,将您的所有工件从旧存储库上传到您的工件。如果您使用 maven deploy:deploy-file,Maven 将为您创建存根 pom。

    • 为开发人员编写脚本,通过 pom 的相应 Maven 坐标转换旧存储库中的引用。

    附带说明:在我们公司,旧的“存储库”和 Maven 存储库同时被积极使用(和写入),因此我们在 Nexus 和旧的“存储库”。

    【讨论】:

      【解决方案2】:

      Gradle 不需要 pom 文件,如果它们不可用,它应该直接引用 jars。所以这应该“正常工作”

      repositories {
          maven {
              url "http://repo/root"
          }
      }
      

      如果由于某种原因存在细微差别,您可以使用 Ivy 存储库。见custom ivy repositoriesIvyArtifactRepository 例如:

      repositories {
          ivy {
              url "http://repo/root" 
              layout "pattern", {
                  artifact "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier])(.[ext])" 
              }
          }
      }
      

      【讨论】:

      • 我们只需要确保我们的文件名遵循 maven 约定并且它可以工作。干杯。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 2021-02-21
      • 2016-05-23
      • 2011-10-05
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多