使用没有pom文件的Maven存储库

时间:2018-07-03 12:16:21

标签: maven gradle artifactory

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

它存储罐子的方式与maven存储库相同。即

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

但是,此存储库不包含pom文件。只是罐子和src罐子。

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

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

我们可以合成并插入很多简单的pom,它们只有组/工件/版本等,没有依赖性。但是想知道是否有更简单的方法。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

请注意:在我们公司中,旧的“存储库”和Maven存储库被同时积极使用(并写入),因此我们在Nexus和旧的“存储库”。

答案 1 :(得分:1)

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

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])" 
        }
    }
}