GithubをMavenリポジトリにする方法

ここのところ技術系の本の写経もサボってるし、ソレ系のRSSフィードを全然読まなくなったなぁと。
ってことで、久しぶりにLivedoor Reader開いたら、何年も前からチェックしてる おいぬま日報 にクソアツいエントリが↓
GitHubをMavenリポジトリにしよう | おいぬま日報
 
さっそくやってみます。
 
■ Mavenなプロジェクトを作る
 
Maven Project選んで

 
いつだってhogeな男です。

 
 
■ ひとまずローカルでdeployしてみる
 
おいぬまさんのその1.を参考にしてclean deployを叩いてみる。

 
 
■ Githubおよびプラグインの設定
 
極力英語で頑張ってみようということで↓を参考にして進めます。
http://stackoverflow.com/questions/14013644/hosting-a-maven-repository-on-github
 
Githubにリポジトリ作って、

push出来る状態にしておきます。

$ clip < ~/.ssh/id_rsa.pub
#Githubのリポジトリに貼り付けて
$ touch README.md
$ git init
$ git add README.md
$ git commit -m "first commit"
$ git remote add origin git@github.com:shinodogg/hoge.git
$ git push -u origin master

 
settings.xmlで↓のようにGithubのアカウント周りの設定をして、
Mavenタスクを叩く時に参照するような感じになります。

<servers>
  <server>
    <id>github</id>
    <username>mailmail@hogehoge.com</username>
    <password>xxxxxx</password>
  </server>
</servers>

 
pom.xmlの中では↓のようにpropertyを用意します。

<properties>
  <github.global.server>github</github.global.server>
</properties>

 
GithubにデプロイするようのプラグインはSite Maven Pluginというものですが、
↓によると、最新バージョンは0.8のようです。
http://mvnrepository.com/artifact/com.github.github/site-maven-plugin
 
GithubのSite Maven Pluginがデプロイするリポジトリの情報をdistributionManagementで定義して、

<distributionManagement>
  <repository>
    <id>github</id>
    <name>GitHub ${project.artifactId} Repository</name>
    <url>https://raw.github.com/shinodogg/${project.artifactId}/mvn-repo</url>
  </repository>
</distributionManagement>

 
いよいよビルド周りの設定になります。

<groupId>com.shinodogg</groupId>
<artifactId>hoge</artifactId>
<version>0.0.1-SNAPSHOT</version>
~略~
<build>
  <plugins>
    <!-- ローカルで作ったのをGithubにUploadする感じなのかな -->
    <plugin>
      <artifactId>maven-deploy-plugin</artifactId>
      <version>2.7</version>
      <configuration>
        <altDeploymentRepository>internal.repo::default::file://${project.build.directory}/mvn-repo</altDeploymentRepository>
      </configuration>
    </plugin>
    <!-- Github用の諸々の設定は公式サイトで https://github.com/github/maven-plugins -->
    <plugin>
      <groupId>com.github.github</groupId>
      <artifactId>site-maven-plugin</artifactId>
      <version>0.8</version>
      <configuration>
        <message>Maven artifacts for ${project.version}</message>
        <noJekyll>true</noJekyll>
        <outputDirectory>${project.build.directory}/mvn-repo</outputDirectory>
        <branch>refs/heads/mvn-repo</branch>
        <includes><include>**/*</include></includes>
        <repositoryName>${project.artifactId}</repositoryName>
        <repositoryOwner>shinodogg</repositoryOwner>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>site</goal>
          </goals>
          <phase>deploy</phase>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

 
んで、先ほどのMavenのタスク叩くと、以下のようにビルド&デプロイが成功します。

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building hoge 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ hoge ---
[INFO] Deleting C:Userseiji.shinoharaDocumentsworkspace-sts-3.2.0.RELEASEhogetarget
[INFO]

~略~

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO]
[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ hoge ---
[INFO] Building jar: C:Userseiji.shinoharaDocumentsworkspace-sts-3.2.0.RELEASEhogetargethoge-0.0.1-SNAPSHOT.jar
[INFO]

~略~

Downloading: file://C:Userseiji.shinoharaDocumentsworkspace-sts-3.2.0.RELEASEhogetarget/mvn-repo/com/shinodogg/hoge/maven-metadata.xml
Uploading: file://C:Userseiji.shinoharaDocumentsworkspace-sts-3.2.0.RELEASEhogetarget/mvn-repo/com/shinodogg/hoge/0.0.1-SNAPSHOT/maven-metadata.xml
Uploaded: file://C:Userseiji.shinoharaDocumentsworkspace-sts-3.2.0.RELEASEhogetarget/mvn-repo/com/shinodogg/hoge/0.0.1-SNAPSHOT/maven-metadata.xml (767 B at 374.5 KB/sec)
Uploading: file://C:Userseiji.shinoharaDocumentsworkspace-sts-3.2.0.RELEASEhogetarget/mvn-repo/com/shinodogg/hoge/maven-metadata.xml
Uploaded: file://C:Userseiji.shinoharaDocumentsworkspace-sts-3.2.0.RELEASEhogetarget/mvn-repo/com/shinodogg/hoge/maven-metadata.xml (277 B at 67.6 KB/sec)
[INFO]
[INFO] --- site-maven-plugin:0.8:site (default) @ hoge ---
[INFO] Creating 12 blobs
[INFO] Creating tree with 13 blob entries
[INFO] Creating commit with SHA-1: d5523a7829b1e5f4e16b68ba15f59a623bd52a45
[INFO] Updating reference refs/heads/mvn-repo from d92d8c319f6b779f83c41d9290984fc28492a696 to d5523a7829b1e5f4e16b68ba15f59a623bd52a45
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.476s
[INFO] Finished at: Tue May 14 15:38:32 JST 2013
[INFO] Final Memory: 10M/157M
[INFO] ------------------------------------------------------------------------

 
そうすると↓こんな感じでデプロイされています! #nice

 
使うときは↓みたいにすればOKらしい。#ちょっと時間切れで今回できず。。

<repository>
    <id>hoge</id>
    <url>https://raw.github.com/shinodogg/hoge/mvn-repo/</url>
    <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
    </snapshots>
</repository>

 

いやー、コレはテンション上がりますなぁ~。
#ってか日頃から情報収集怠るとイカンですね。。
 

アリスとボブのGit入門レッスン
川野辺 正博
秀和システム
売り上げランキング: 115,755

コメント

タイトルとURLをコピーしました