【问题标题】:Maven Dependency on Repo Hosted on GitMaven 对托管在 Git 上的 repo 的依赖
【发布时间】:2014-02-14 07:56:03
【问题描述】:

我们在自己的 git(不是 Github)存储库内部托管了一个 maven 存储库。 git clone 工作正常:

git clone ssh://git@coyote.acme.com/home/git/acme-mvn-repo.git

所以我们知道 ssh 密钥设置正确。

我们有一个项目,它依赖于托管在 maven 以上存储库中的工件。为此的 pom.xml 包括:

<repository>
    <id>acme-repo</id>
    <url>ssh://git@coyote.acme.com/home/git/acme-mvn-repo.git</url>
</repository>

...

<!-- This dependency is in coyote.acme.com/home/git/acme-mvn-repo.git -->
<dependency>
    <groupId>coyote.acme.com</groupId>
    <artifactId>anvil</artifactId>
    <version>1.0.0</version>
</dependency>

...

<extensions>
    <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>2.6</version>
    </extension>
</extensions>

执行时:

mvn clean install -U

我们得到:

Failed to read artifact descriptor for coyote.acme.com:anvil:jar:1.0.0: 
Could not transfer artifact coyote.acme.com:anvil:pom:1.0.0 from/to acme-repo
(coyote.acme.com:anvil): No connector available to access rep
ository repo (coyote.acme.com:anvil) of type default using the available factories
WagonRepositoryConnectorFactory -> [Help 1]

我们应该使用不同的连接器吗?

【问题讨论】:

  • 这是windows 还是linux,如果是Windows,您需要应用额外的设置来告诉Maven 在哪里获取SSH 公钥-maven.apache.org/plugins/maven-deploy-plugin/examples/…
  • 面向开发人员的 Windows,但也可以通过 Jenkins 在 linux 上构建。
  • 另外在 wagon 网站上 - maven.apache.org/wagon/wagon-providers/wagon-ssh 。从SSH 下载未经测试。虽然,这并不能回答您的问题 - 所以很抱歉 - 通常我与几个团队所做的是托管一个 Nexus 存储库 - sonatype.org/nexus 并通过 Maven 轻松上传和下载工件。还没有遇到过用于分发依赖项的 SSH 服务器。
  • 感谢指向 sonatype 的指针。我看了看,它看起来很整洁,但现在我已经通过在 tomcat 上托管 repo 来让它工作。

标签: git maven ssh


【解决方案1】:

Maven 期望服务器给它单个文件。一个 git repo 只是一个需要 Git 工具来理解它们的变化的集合。所以你所做的没有意义,也永远不会奏效。

您可以做什么:您可以在 HTTP 服务器上克隆存储库。配置它以使根文件夹可以从 Web 浏览器访问。当这可行时,您可以简单地在 Maven 中使用相同的 URL。

我建议先尝试让它在网络浏览器中运行,因为它会给您更好的错误消息,并且您可以使用鼠标浏览 Maven 存储库。

【讨论】:

  • 有很多人使用 Github 作为 maven repo 做这样的事情。请参阅:cemerick.com/2010/08/24/hosting-maven-repos-on-github。我能看到的唯一区别是我们使用的是我们自己的 git 实例而不是 Github。
  • Github(除其他外)也是一个 HTTP 服务器。您通过 SSH 访问的裸 Git 存储库不是。如果您仔细查看您链接的文章中的 URL,您会发现所有访问都是通过 https://... 而不是 SSH 进行的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 2012-06-30
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
相关资源
最近更新 更多