我们在我们自己的 git(不是 Github)存储库内部托管一个 Maven 存储库。 git 克隆工作正常:
git clone ssh://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b9ded0cdf9dad6c0d6cddc97d8dad4dc97dad6d4" rel="noreferrer noopener nofollow">[email protected]</a>/home/git/acme-mvn-repo.git
所以我们知道 ssh key 设置正确。
我们有一个项目依赖于上面的 Maven 存储库中托管的 Artifact 。为此,pom.xml 包括:
<repository>
<id>acme-repo</id>
<url>ssh://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ee89879aae8d8197819a8bc08f8d838bc08d8183" rel="noreferrer noopener nofollow">[email protected]</a>/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]
我们应该使用不同的连接器吗?
最佳答案
Maven 希望服务器给它单个文件。 git 存储库只是更改的集合,需要 Git 工具才能理解它们。所以你所做的事情没有意义,也永远不会起作用。
您可以做什么:您可以在 HTTP 服务器上克隆存储库。将其配置为可以通过 Web 浏览器访问根文件夹。当此方法有效时,您只需在 Maven 中使用相同的 URL 即可。
我建议首先尝试让它在网络浏览器中工作,因为它会给你更好的错误消息,并且你可以使用鼠标浏览 Maven 存储库。
关于git - Maven 对 Git 上托管的存储库的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313756/