使用没有 pom 文件的 Maven 仓库
Use a maven repo which does not have pom files
我们有一个大型自定义工件存储库,供我们旧的内部 ant 构建使用。
它存储 jar 的方式与 Maven 存储库的方式大致相同。即
http://repo/root/<group>/<artifact>/<version>/<artifact>-<version>.jar
但是,这个存储库 does_not_ 包含 pom 文件。只有 jars 和 src jars。
我们现在正在将大量项目迁移到使用 maven/gradle,这些项目使用我们拥有的 Artifactory 安装。但是项目仍然对存储在旧存储库中的工件有很多依赖性。
我想知道是否有人知道使用 maven/gradle 访问这个旧式存储库(没有 poms)的方法?
我们可以 合成并插入大量简单的 pom,它们只有 group/artifact/version 等,没有依赖项。但想知道是否有更简单的方法。
毕竟,group/artifact/version 在路径本身中。 poms 从不包含依赖项,因此在这种情况下,poms 不会(据我所知)提供任何附加信息。
任何 advice/help 将不胜感激。
当您将项目转换为 Maven 时,您需要接触依赖项定义。您需要用 Maven 坐标替换旧的基于文件的访问。
因此,我建议如下(我们做了非常相似的事情,只是使用 Windows 网络驱动器而不是基于 http 的存储库):
编写一个脚本,将您的所有工件从旧存储库上传到您的工件。如果您使用 maven deploy:deploy-file
,Maven 将为您创建存根 poms。
为开发人员编写脚本,通过 pom 的相应 Maven 坐标转换旧存储库上的引用。
附带说明:在我们公司,旧 "repository" 和 Maven 存储库同时被积极使用(和写入),因此我们在 Nexus 之间开发了双向同步作业和旧的 "repository".
Gradle 不需要 pom 文件,如果它们不可用,它应该直接引用 jars。所以这应该"just work"
repositories {
maven {
url "http://repo/root"
}
}
如果由于某种原因存在细微差异,您可以使用 Ivy 存储库。参见 custom ivy repositories and IvyArtifactRepository 例如:
repositories {
ivy {
url "http://repo/root"
layout "pattern", {
artifact "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier])(.[ext])"
}
}
}
我们有一个大型自定义工件存储库,供我们旧的内部 ant 构建使用。
它存储 jar 的方式与 Maven 存储库的方式大致相同。即
http://repo/root/<group>/<artifact>/<version>/<artifact>-<version>.jar
但是,这个存储库 does_not_ 包含 pom 文件。只有 jars 和 src jars。
我们现在正在将大量项目迁移到使用 maven/gradle,这些项目使用我们拥有的 Artifactory 安装。但是项目仍然对存储在旧存储库中的工件有很多依赖性。
我想知道是否有人知道使用 maven/gradle 访问这个旧式存储库(没有 poms)的方法?
我们可以 合成并插入大量简单的 pom,它们只有 group/artifact/version 等,没有依赖项。但想知道是否有更简单的方法。
毕竟,group/artifact/version 在路径本身中。 poms 从不包含依赖项,因此在这种情况下,poms 不会(据我所知)提供任何附加信息。
任何 advice/help 将不胜感激。
当您将项目转换为 Maven 时,您需要接触依赖项定义。您需要用 Maven 坐标替换旧的基于文件的访问。
因此,我建议如下(我们做了非常相似的事情,只是使用 Windows 网络驱动器而不是基于 http 的存储库):
编写一个脚本,将您的所有工件从旧存储库上传到您的工件。如果您使用 maven
deploy:deploy-file
,Maven 将为您创建存根 poms。为开发人员编写脚本,通过 pom 的相应 Maven 坐标转换旧存储库上的引用。
附带说明:在我们公司,旧 "repository" 和 Maven 存储库同时被积极使用(和写入),因此我们在 Nexus 之间开发了双向同步作业和旧的 "repository".
Gradle 不需要 pom 文件,如果它们不可用,它应该直接引用 jars。所以这应该"just work"
repositories {
maven {
url "http://repo/root"
}
}
如果由于某种原因存在细微差异,您可以使用 Ivy 存储库。参见 custom ivy repositories and IvyArtifactRepository 例如:
repositories {
ivy {
url "http://repo/root"
layout "pattern", {
artifact "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier])(.[ext])"
}
}
}