Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在github上托管Maven存储库_Maven_Github_Github Pages_Mvn Repo - Fatal编程技术网

在github上托管Maven存储库

在github上托管Maven存储库,maven,github,github-pages,mvn-repo,Maven,Github,Github Pages,Mvn Repo,我有一个小型开源库的分支,我正在github上工作。我想通过maven将其提供给其他开发人员,但我不想运行自己的Nexus服务器,因为它是一个fork,所以我无法轻松地将其部署到oss.sonatype.org 我想做的是将它部署到github,以便其他人可以使用maven访问它。最好的方法是什么?我能找到的最佳解决方案包括以下步骤: 创建一个名为mvn repo的分支来托管maven工件 使用github将工件推送到github 将maven配置为将远程mvn repo用作maven存储库 使

我有一个小型开源库的分支,我正在github上工作。我想通过maven将其提供给其他开发人员,但我不想运行自己的Nexus服务器,因为它是一个fork,所以我无法轻松地将其部署到oss.sonatype.org


我想做的是将它部署到github,以便其他人可以使用maven访问它。最好的方法是什么?

我能找到的最佳解决方案包括以下步骤:

  • 创建一个名为
    mvn repo
    的分支来托管maven工件
  • 使用github将工件推送到github
  • 将maven配置为将远程
    mvn repo
    用作maven存储库
  • 使用这种方法有几个好处:

    • Maven工件在一个名为
      mvn repo
      的单独分支中与源代码分开保存,就像github页面在一个名为
      gh pages
      的单独分支中保存一样(如果使用github页面)
    • 与其他建议的解决方案不同,如果您正在使用它们,它不会与您的
      gh页面
      冲突
    • 自然地与部署目标绑定,因此没有新的maven命令需要学习。只需像平常一样使用
      mvn部署
    将构件部署到远程maven repo的典型方式是使用
    mvn deploy
    ,因此,让我们为该解决方案修补该机制

    首先,告诉maven将工件部署到目标目录中的临时暂存位置。将此添加到您的
    pom.xml

    
    内部回购
    临时暂存存储库
    文件://${project.build.directory}/mvn repo
    maven部署插件
    2.8.1
    internal.repo::default::file://${project.build.directory}/mvn repo
    
    现在尝试运行
    mvn clean deploy
    。您将看到它将您的maven存储库部署到
    target/mvn repo
    。下一步是让它将该目录上传到GitHub

    将身份验证信息添加到
    ~/.m2/settings.xml
    ,以便github
    站点maven插件可以推送到github:

    
    github
    您的用户名
    你的密码
    
    (如前所述,请确保
    chmod 700 settings.xml
    以确保没有人可以读取文件中的密码。如果有人知道如何让site maven插件提示输入密码,而不是在配置文件中要求输入密码,请告诉我。)

    然后通过将以下内容添加到pom中,告诉GitHub
    site maven插件关于您刚刚配置的新服务器:

    
    github
    
    最后,配置
    site maven插件
    ,将临时暂存repo上传到Github上的
    mvn repo
    分支:

    
    com.github.github
    SiteMaven插件
    0.11
    ${project.version}的Maven工件
    真的
    ${project.build.directory}/mvn repo
    参考/主管/mvn回购
    **/*
    你的名字
    您的-GITHUB-USERNAME
    网站
    部署
    
    mvn回购
    分支不需要存在,它将为您创建

    现在再次运行
    mvn clean deploy
    。您应该看到maven deploy plugin将文件“上载”到目标目录中的本地暂存存储库,然后site maven plugin提交这些文件并将其推送到服务器

    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building DaoCore 1.3-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    ...
    [INFO] --- maven-deploy-plugin:2.5:deploy (default-deploy) @ greendao ---
    Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/greendao-1.3-20121223.182256-3.jar (77 KB at 2936.9 KB/sec)
    Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/greendao-1.3-20121223.182256-3.pom (3 KB at 1402.3 KB/sec)
    Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/maven-metadata.xml (768 B at 150.0 KB/sec)
    Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/maven-metadata.xml (282 B at 91.8 KB/sec)
    [INFO] 
    [INFO] --- site-maven-plugin:0.7:site (default) @ greendao ---
    [INFO] Creating 24 blobs
    [INFO] Creating tree with 25 blob entries
    [INFO] Creating commit with SHA-1: 0b8444e487a8acf9caabe7ec18a4e9cff4964809
    [INFO] Updating reference refs/heads/mvn-repo from ab7afb9a228bf33d9e04db39d178f96a7a225593 to 0b8444e487a8acf9caabe7ec18a4e9cff4964809
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 8.595s
    [INFO] Finished at: Sun Dec 23 11:23:03 MST 2012
    [INFO] Final Memory: 9M/81M
    [INFO] ------------------------------------------------------------------------
    
    在您的浏览器中访问github.com,选择
    mvn repo
    分支,并验证您的所有二进制文件现在都在那里

    祝贺你

    现在,只需运行
    mvncleandeploy
    ,就可以将maven工件部署到穷人的公共repo

    您还需要执行一个步骤,即配置任何依赖于您的pom的pom,以了解您的存储库在哪里。将以下代码段添加到依赖于您的项目的任何项目的pom中:

    
    您的项目名称mvn repo
    https://github.com/YOUR-USERNAME/YOUR-PROJECT-NAME/raw/mvn-repo/
    真的
    总是
    
    现在,任何需要jar文件的项目都将自动从github maven存储库下载它们


    编辑:为避免注释中提到的问题(“创建提交时出错:请求无效。对于“属性/名称”,nil不是字符串”),请确保在github上的配置文件中声明名称。

    另一种选择是使用任何支持webdav的web主机。当然,您需要一些空间来实现这一点,但它的设置非常简单,是运行完整的nexus服务器的好选择

    将其添加到构建部分

         <extensions>
            <extension>
            <artifactId>wagon-webdav-jackrabbit</artifactId>
            <groupId>org.apache.maven.wagon</groupId>
            <version>2.2</version>
            </extension>
        </extensions>
    
    
    大篷车
    org.apache.maven.wagen
    2.2
    
    将类似的内容添加到distributionManagement部分

    <repository>
        <id>release.repo</id>
        <url>dav:http://repo.jillesvangurp.com/releases/</url>
    </repository>
    
    
    发行回购
    dav:http://repo.jillesvangurp.com/releases/
    
    最后,确保在settings.xml中设置存储库访问权限

    将此添加到服务器部分

        <server>
            <id>release.repo</id>
            <username>xxxx</username>
            <password>xxxx</password>
        </server>
    
    
    发行回购
    xxxx
    xxxx
    
    以及存储库部分的定义

                <repository>
                    <id>release.repo</id>
                    <url>http://repo.jillesvangurp.com/releases</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
    
    
    发行回购
    http://repo.jillesvangurp.com/releases
    真的
    假的
    
    最后,如果您有任何标准的php托管,您可以使用类似sabredav的东西来添加webdav功能
    mvn deploy -Dregistry=https://maven.pkg.github.com/yourusername -Dtoken=yor_token