githubを利用して個人maven倉庫を構築する


原文出典: hengyunabc
に縁を付ける
以前、オープンソースプロジェクトがgithubでmaven倉庫を作っているのを見て、自分も作っていると思いました.研究して、記録します.
簡単に言えば、3つのステップがあります.
  • deployからローカルディレクトリ
  • ローカルディレクトリをgtihubに提出する
  • githubアドレスを倉庫アドレス
  • として構成する.
    local file mavenウェアハウスの構成
    deployからローカルへ
    mavenはhttp,ftp,sshなどのdeployを介してリモートサーバにも、ローカルファイルシステムにもdeployを介してもよい.
    例えば、プロジェクトdeployを/home/hengyunabc/code/maven-repo/repository/ディレクトリの下に置きます.
    1
    2
    3
    4
    5
    6 <distributionManagement>      <repository>        <id>hengyunabc-mvn-repo</id>        <url>file:/home/hengyunabc/code/maven-repo/repository/</url>      </repository>    </distributionManagement>
    コマンドラインを使用すると、次のようになります.
    1 mvn deploy -DaltDeploymentRepository=hengyunabc-mvn-repo:: default ::file:/home/hengyunabc/code/maven-repo/repository/
    プロジェクトで明示的な構成を避けるために、コマンドラインをdeployに使用することをお勧めします.
    https://maven.apache.org/plugins/maven-deploy-plugin/
    https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
    ローカル倉庫をgithubに提出する
    上はプロジェクトdeployをローカルディレクトリhome/hengyunabc/code/maven-repo/repositoryに、下はこのディレクトリをgithubに提出します.
    Githubにプロジェクトを新規作成し、home/hengyunabc/code/maven-repoのファイルをgtihubに提出します.
    1
    2
    3
    4
    5
    6 cd /home/hengyunabc/code/maven-repo/ git init git add repository/* git commit -m 'deploy xxx' git remote add origin git @github .com:hengyunabc/maven-repo.git git push origin master
    最終的な効果は私の個人倉庫を参考にすることができます.
    https://github.com/hengyunabc/maven-repo
    github maven倉庫の使用
    githubはraw.githubusercontent.comというドメイン名を使用してrawファイルのダウンロードに使用しているからです.だからこのmaven倉庫を使ってpom.xmlに追加すれば:
    1
    2
    3
    4
    5
    6 <repositories>          <repository>              <id>hengyunabc-maven-repo</id>              <url>https: //raw.githubusercontent.com/hengyunabc/maven-repo/master/repository</url>          </repository>      </repositories>
    ディレクトリの表示と検索
    注目すべきは、githubはセキュリティ上の理由でrawファイルのダウンロードと元のgithubドメイン名を分離しているが、raw.githubusercontent.comというドメイン名はディレクトリブラウズをサポートしていないことだ.だから、ファイルディレクトリをブラウズしたり、検索したりするにはgithubドメイン名の下の倉庫に直接行って見ることができます.
    例えばこのファイルmybatis-ehcache-spring-0.0.1-20150804.095005-1.jar:
    ブラウザのアドレスは次のとおりです.
    https://github.com/hengyunabc/maven-repo/blob/master/repository/io/github/hengyunabc/mybatis-ehcache-spring/0.0.1-SNAPSHOT/mybatis-ehcache-spring-0.0.1-20150804.095005-1.jar
    maven倉庫urlは次のとおりです.
    https://raw.githubusercontent.com/hengyunabc/maven-repo/master/repository/io/github/hengyunabc/mybatis-ehcache-spring/0.0.1-SNAPSHOT/mybatis-ehcache-spring-0.0.1-20150804.095005-1.jar
    maven倉庫作業のメカニズム
    以下、maven倉庫の動作の原理を紹介します.典型的なmaven依存の下には、この3つのファイルがあります.
    https://github.com/hengyunabc/maven-repo/tree/master/repository/io/github/hengyunabc/mybatis-ehcache-spring/0.0.1-SNAPSHOT
    1
    2
    3 maven-metadata.xml maven-metadata.xml.md5 maven-metadata.xml.sha1 maven-metadata.xmlには、最後のdeployのバージョンと時間が記録されています.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14 <?xml version= "1.0" encoding= "UTF-8" ?> <metadata modelVersion= "1.1.0" >    <groupId>io.github.hengyunabc</groupId>    <artifactId>mybatis-ehcache-spring</artifactId>    <version> 0.0 . 1 -SNAPSHOT</version>    <versioning>      <snapshot>        <timestamp> 20150804.095005 </timestamp>        <buildNumber> 1 </buildNumber>      </snapshot>      <lastUpdated> 20150804095005 </lastUpdated>
         </versioning> </metadata>
    ここでmd 5,sha 1検証ファイルは、このmetaファイルの完全性を保証するために使用される.
    mavenはプロジェクトを作成する際にmaven-metadata.xmlをリクエストし、見つからない場合はjarファイルを直接リクエストし、jarファイルをダウンロードする際にもjarのmd 5,sha 1ファイルをダウンロードしようとします.maven-metadata.xmlファイルは重要です.このファイルが最新のjarバージョンを指定していないと、リモートウェアハウスのjarがバージョンを更新しても、ローカルmavenの作成時に-Uパラメータを使用しても、最新のjarを引き出すことはありません.
    だから簡単にjarパッケージをgithubに置けば済むわけではありません.必ずローカルDeployでmaven-metadata.xmlファイルを生成しgithubにアップロードしなければなりません.
    参照先:http://maven.apache.org/ref/3.2.2/maven-repository-metadata/repository-metadata.html
    mavenの倉庫関係
    https://maven.apache.org/repository/index.html
    ローカル・ウェアハウスの使用の構成
    ローカルfileウェアハウスを使用するには、プロジェクトのpom.xmlで次のように構成します.
    1
    2
    3
    4
    5
    6 <repositories>         <repository>             <id>hengyunabc-maven-repo</id>             <url>file:/home/hengyunabc/code/maven-repo/repository/</url>         </repository>     </repositories>
    注意事項
    mavenのrepositoryには優先度の構成はなく、一部の依存に対してrepositoryを単独で構成することもできません.したがって、プロジェクトに複数のrepositoryが構成されている場合、初回作成時に依存を順次ダウンロードしようとします.見つからない場合は、次を試してみると、プロセス全体が長くなります.
    だから、できるだけ多くの依存は同じ倉庫に置いて、プロジェクトごとに自分の倉庫を持ってはいけません.
    QQ技術交流群290551701