かとじゅんの技術日誌

技術の話をするところ

sourceforge.jpにMaven2リポジトリを作成する方法

別のOSSプロジェクトを始めていて、Maven2リポジトリが欲しくなりました。
sourceforge.jp上にMaven2リポジトリを作成できると噂で聞いていたので、早速ぐぐってみたらid:tonocchiさんのブログ嫁でしたw

mvn deploy

ッてやったら、勝手にリポジトリを作ってくれるので、そんな面倒い物じゃないです。あと、前回のwebサイト航海用の設定が既にあるので、それらを転用します。こんな感じにpomに記述して、mvn deployすれば完了です。

<repository>
<uniqueVersion>false</uniqueVersion>
<id>website</id>
<url>scp://shell.sourceforge.jp/path/to/repository</url>
</repository>

どこまで使えるのかわかりませんが、なるべく自前の鯖では運用しないようにしたいので借用ということで、手探りで環境構築してみることに。

shell鯖のどこかに置けばよいのかな〜。
まず、sshできる環境を作らないといけませんね。

SSHアクセスのためのキー

の手順を実行。
MacOSXで以下のコマンドを実行しました。

$ ssh-keygen -t dsa

公開鍵として~/.ssh/id_dsa.pubが生成されているはずなのでこれを改行が入らないようにユーザ設定から登録する。

$ cp ~/.ssh/id_dsa.pub ~/

などとして、テキストエディットで開いて全選択+コピーではりつけですね。

次にシェルサーバにログイン。
シェルサーバーが提供するサービスとその利用方法

$ ssh shell.sourceforge.jp -l sourceforgeのアカウント名

パスワードは聞かれずにそのままログインできるはず。ログインするとカレントディレクトリが/home/usersのホームディレクトリになっているはず。
プロジェクトのディレクトリを探してみる。/home/groupsの下ですね。

j5ik2o@sf-usr-shell:~$ cd /home/groups/x/xx/xxxxx/
j5ik2o@sf-usr-shell:/home/groups/x/xx/xxxxx$ ls -al
total 16
drwxrwsr-x  4 dummy xxxxx 4096 Apr 20  2009 .
drwxr-xr-x 34 root  root   4096 Sep 24 10:11 ..
drwxrwsr-x  2 dummy xxxxx 4096 Apr 20  2009 cgi-bin
drwxrwsr-x  4 dummy xxxxx 4096 Oct 24 22:24 htdocs

http://xxxxx.sourceforge.jp/のドキュメントルートがhtdocsですね。*1
とりあえず、maven2リポジトリ用にディレクトリを作っておきましょう。

j5ik2o@sf-usr-shell:/home/groups/x/xx/xxxxx$ cd htdocs
j5ik2o@sf-usr-shell:/home/groups/x/xx/xxxxx/htdcos$ mkdir maven2
j5ik2o@sf-usr-shell:/home/groups/x/xx/xxxxx/htdcos$ mkdir maven2-snapshot

http://xxxxx.sourceforge.jp/maven2/
http://xxxxx.sourceforge.jp/maven2-snapshot/
が見えたらOKです。

次にpom.xmlの設定ですが、id:tonocchiさんのブログを参考に編集。
具体的には以下のような感じ。リポジトリを参照するほうと、デプロイする側がURLが違うので注意が必要。

	<repositories>
		<repository>
			<id>xxxxx.sourceforge.jp</id>
			<name>Xxxxx Maven Repository</name>
			<url>http://xxxxx.sourceforge.jp/maven2</url>
		</repository>
	        <repository>
       		     <id>xxxxx.sourceforge.jp</id>
      		     <name>Xxxxx Maven Snapshot Repository</name>
			<url>http://xxxxx.sourceforge.jp/maven2-snapshot</url>
        	</repository>
	</repositories>
<!-- 中略 -->
	<distributionManagement>
		<repository>
			<uniqueVersion>false</uniqueVersion>
			<id>shell.sourceforge.jp</id>
			<name>Xxxxx Maven Repository</name>
			<url>scp://shell.sourceforge.jp/home/groups/x/xx/xxxxx/htdocs/maven2</url>
		</repository>
		<snapshotRepository>
			<uniqueVersion>true</uniqueVersion>
			<id>shell.sourceforge.jp</id>
			<name>Xxxxx Maven Snapshot Repository</name>
			<url>scp://shell.sourceforge.jp/home/groups/x/xx/xxxxx/htdocs/maven2-snapshot</url>
		</snapshotRepository>
	</distributionManagement>

さらに、Maven2でshell.sourceforge.jpにログインするための設定を行います。
~/.m2/settings.xmlに以下の項目を追加してください。
privateKeyタグでは、先ほどssh-keygenで作成した秘密鍵の方を指定してください。
passhraseはsourceforgessh-keygenで指定したパスワードです。

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <servers>
   <server>
     <id>shell.sourceforge.jp</id>
     <username>j5ik2o</username>
     <privateKey>/Users/j5ik2o/.ssh/id_dsa</privateKey>
     <passphrase>XXXXXX</passphrase>
   </server>
  </servers>
</settings>
$ mvn deploy

これでsourceforge.jp上のリポジトリにデプロイできるはずです。ご参考までに。

*1:xxxxxのあたりはプロジェクト名。読み替えてください。