【问题标题】:SVN Backed Maven RepoSVN 支持的 Maven 回购
【发布时间】:2011-08-10 15:10:54
【问题描述】:

我们使用 SVN 作为 Maven 存储库。我们知道使用 SVN 支持的 maven 存储库是不可取的,但由于我们组织内部的限制,我们仍然必须使用它。当前使用的 SVN 支持的存储库已部分实施。我们有开发人员在两个不同的地理位置工作。我们现在面临的问题是,每当开发人员向 maven repo(svn repository) 添加工件时,所有其他开发人员都必须手动更新本地 svn 视图以获取新添加的工件,然后才能执行 mvn clean package。

如果工件在本地不存在,是否有办法自动将工件从 svn maven 存储库下载到本地存储库?

SVN 由网络服务器托管,因此仅使用 HTTPS 协议访问 Maven 存储库。我们使用 maven 2.2 版本。

我尝试使用 wagon 插件,它将构建输出(jar\war)直接部署到 scm。我们对部署构建输出不感兴趣。如果本地不存在,我们需要一种解决方案来自动从 svn maven repo 下载工件?

【问题讨论】:

    标签: maven-2 maven maven-plugin maven-3


    【解决方案1】:

    您没有提及您的 SVN 存储库如何将其工件公开给开发团队。如果它确实是一个 Maven 存储库(符合标准 Maven 存储库布局),那么您只需在 POM 的“存储库”部分中指定它的 URL。这样就不再需要更新本地存储库了。

    我怀疑您签入的 subversion 不是 Maven 存储库布局?如果工件的每个新版本都作为新文件签入,您将失去使用 subversion 的主要好处之一....

    您正在描述任何 Maven 存储库管理器提供的功能,例如:Nexus。 我理解您不愿意采用新的存储库技术,但是像 subversion 这样的 SCM 系统主要是为跟踪文本文件的更改而设计的。

    总之,如果你真的希望在循环中保持颠覆,我会建议以下两种选择之一:

    1. 使用颠覆来控制本地存储库的内容。 (第 3 方依赖项和开发人员生成的工件)
    2. 使用像Nexus 这样的存储库管理器。让 Nexus 管理来自外部存储库的缓存内容,但将本地托管存储库的内容提交到 Subversion。

    【讨论】:

    • 我们在 SVN 支持的 maven repo 中维护 3rd 方依赖项和少量工件。每当向项目添加新的依赖项时,所有开发人员都需要手动更新 svn 本地副本。 SVN maven repo 通过 https 访问。
    • 我们在 SVN 支持的 maven repo 中维护 3rd 方依赖项和少量工件。所有依赖项和工件都已签入,具有 maven 期望的默认目录布局。尝试在具有所需凭据的存储库标签中添加 svn maven repo url,但是在构建时它给出了错误找不到资源错误。 SVN maven repo 通过 https 访问。我们现在没有使用 nexus 或工件存储库的计划。如果依赖项不存在,需要一个解决方案来自动更新 maven repo(3rd 方二进制文件)的 svn 本地副本。
    • 如果您不准备使用 Maven 存储库管理器,完全放弃 Maven 可能会更好。我可以建议使用 ant 的 ivy 插件来管理依赖项。有趣的是,ivy 有一个解析器,可以让您在 Subversion 中存储工件。见code.google.com/p/ivysvn
    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多