我们有一个大型的自定义工件存储库,供我们旧的内部ant构建使用。
它存储罐子的方式与maven存储库相同。即
http://repo/root/<group>/<artifact>/<version>/<artifact>-<version>.jar
但是,此存储库不包含pom文件。只是罐子和src罐子。
我们现在正在将很多项目迁移到使用maven / gradle,这些项目使用了我们拥有的Artifactory安装。但是这些项目仍然依赖于旧存储库中存储的工件。
我想知道是否有人知道使用maven / gradle访问这个旧式仓库(没有pom)的方法?
我们可以合成并插入很多简单的pom,它们只有组/工件/版本等,没有依赖性。但是想知道是否有更简单的方法。
毕竟,组/工件/版本位于路径本身中。 poms永远不会包含依赖项,因此在这种情况下,poms不会(据我所知)不会提供任何其他信息。
任何建议/帮助将不胜感激。
答案 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 repositories和IvyArtifactRepository例如:
repositories {
ivy {
url "http://repo/root"
layout "pattern", {
artifact "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier])(.[ext])"
}
}
}