Github作为Maven存储库

时间:2016-07-20 14:19:29

标签: maven github

我正在尝试使用私有Github存储库作为Maven存储库,请按照此页面上的说明进行操作:Hosting a Maven Repository in Github

我能够正确部署,我可以看到部署到Github仓库的工件(罐子,poms等)。

什么是无效的是使用此存储库从中提取依赖项。在日志中,我可以看到pom试图下载,但它失败了。

[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for https://raw.githubusercontent.com/ORGANIZATION/mvn-repo/master/ with username=randymay, password=***
Downloading: https://raw.githubusercontent.com/ORGANIZATION/mvn-repo/master/org/hibernate/hibernate/3.2.7.patched/hibernate-3.2.7.patched.pom
[WARNING] The POM for org.hibernate:hibernate:jar:3.2.7.patched is missing, no dependency information available

如果我在curl请求中使用该URL(使用基本身份验证),我可以下载pom。

curl -v https://randymay:*****@raw.githubusercontent.com/ORGANIZATION/mvn-repo/master/org/hibernate/hibernate/3.2.7.patched/hibernate-3.2.7.patched.pom

此外,在日志中,它实际上是在尝试下载jar:

[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for https://raw.githubusercontent.com/ORGANIZATION/mvn-repo/master/ with username=randymay, password=***
Downloading: https://raw.githubusercontent.com/ORGANIZATION/mvn-repo/master/org/hibernate/hibernate/3.2.7.patched/hibernate-3.2.7.patched.jar
Could not find artifact org.hibernate:hibernate:jar:3.2.7.patched in github (https://raw.githubusercontent.com/ORGANIZATION/mvn-repo/master/)

这是我的pom.xml的存储库部分:

<repositories>
    <!-- Repositories -->
    <repository>
        <id>github</id>
        <url>https://raw.githubusercontent.com/ORGANIZATION/mvn-repo/master/</url>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
        </releases>
    </repository>
</repositories>

这是我在settings.xml中的服务器条目:

<server>
    <id>github</id>
    <username>randymay</username>
    <password>*****</password>
</server>

请注意,在引用的文章中,他们使用了&#39; raw.github.com&#39;域。我一开始就尝试过,并收到同样的问题。当我使用curl连接到该域名时,我收到了永久移动的&#39;错误。我正在使用&#39; raw.githubusercontent.com&#39;因为那是我能够成功使用卷曲的网址。如果这不正确,请告诉我。

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

经过多次调查,我找到了解决方案。我需要提供Base 64编码凭证,以便Apache Wagon将它们放入Github请求的标头中。这就是Github所要求的(可能是防火墙后面的任何Maven存储库)。

请注意,编码字符串是用户名和密码的组合,用冒号分隔。

这是我的settings.xml中的更新条目:

    <server>
        <id>github</id>
        <username>randymay</username>
        <password>*****</password>
        <configuration>
            <httpHeaders>
                <property>
                    <name>Authorization</name>
                    <!-- Base64-encoded "<username>:<password>" -->
                    <value>Basic *******************</value>
                </property>
            </httpHeaders>
        </configuration>
    </server>