- 追加された行はこの色です。
- 削除された行はこの色です。
[[DeployToMaven2RepoRemote]]
#contents
*概要 [#h278a94f]
* 概要 [#h278a94f]
このページには、maven.seasar.orgのMaven2レポジトリへリリース物をデプロイする方法について記述します。
(主にS2Containerプロダクトについて記述しますが、他のプロダクトでも同じ手順でOKと思います。)
- 対象者: Seasar.orgにアカウントを持っているコミッタ
- 利用申請: 不要 (プロジェクト開設時に自動作成されます)
- 関連URL: http://maven.seasar.org/
対象者: seasar.orgにアカウントを持っていて、公開鍵登録を済ましている開発者
このページでは、maven.seasar.orgのMaven2レポジトリへリリース物をWebDAV経由(HTTPS通信)でデプロイする方法について記述します。その他のMaven情報については MavenInformation を参照してください。
その他のMaven情報については MavenInformation を参照してください。
- 2007年3月10日(土) 25:30以前の過去のデプロイ方法
-- [[SCPを利用したデプロイ方法>Maven2DeployToRepoRemoteWithSCP]]
--- 現在は利用できません。
*準備 [#vb33727e]
**初回のみ行うこと [#h9722e92]
1度行えば良いモノ。
- Maven2をインストールする。
-- 参照: http://maven.apache.org/download.html
- seasar.orgへのアカウントを取得し、秘密鍵を持っていること。
-- 秘密鍵はOpenSSH形式である必要があります。普段puttyを使っている方はputtygen等で変換しておいてください。
- seasar.orgへのSSHログイン権限を持っていること。
-- 持っていない場合は申請してください。
- プロダクトのartifactId・groupIdを決める。
- プロダクトでMaven2を利用するための申請を行うこと。
-- 承認されれば、deployしたいartifactが属するプロジェクトのgroupIdに対応するディレクトリが、プロジェクト配下のディレクトリへのシンボリックリンクとして用意されます。
-- シンボリックリンクが作られていない場合はoperation MLへお問い合わせ下さい。
- ${user.home}に".ssh"ディレクトリが無い場合は作成しておく。
- Seasar.orgのコミッタアカウントを取得していること。
**毎回必要なこと [#s9488b06]
デプロイ時に毎回行うモノ。
- pom.xmlの"version"をこれからデプロイする番号へ変更しているか確認すること。
-- (パッケージングにantを使用している場合はbuild.xmlも)
*プロジェクト設定(pom.xml) [#m0b97a67]
* プロジェクト設定 (pom.xml) [#m0b97a67]
# s2containerのpom.xmlを参考にしてください。
** <build/> [#ja8b2e26]
&color(#000,#bdf){SCP方式から移行する際にこのように変更する必要有り};
WebDAV経由でデプロイするために必要なモジュール定義を追加します。
<build>
... 省略 ...
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav</artifactId>
<version>1.0-beta-2</version>
</extension>
</extensions>
</build>
** <distributionManagement/> [#f1ac58d1]
&color(#000,#bdf){SCP方式から移行する際にこのように変更する必要有り};
pom.xmlにSeasarプロジェクト用のデプロイ先リポジトリを記述します。このリポジトリ設定はurl含めて全プロジェクトで共通です。
# url を /home/groups/プロジェクト名/maven/maven2 or /home/groups/sandbox/プロジェクト名/maven/maven2 にしている場合、下記のように修正してください。
<distributionManagement>
<repository>
<uniqueVersion>false</uniqueVersion>
<id>maven.seasar.org</id>
<name>The Seasar Foundation Maven2 Repository</name>
<url>scp://maven.seasar.org/home/groups/maven/maven/maven2</url>
<name>The Seasar Foundation Maven Repository</name>
<url>dav:https://www.seasar.org/maven/maven2</url>
</repository>
<snapshotRepository>
<uniqueVersion>true</uniqueVersion>
<id>maven.seasar.org</id>
<name>The Seasar Foundation Maven2 Snapshot Repository</name>
<url>scp://maven.seasar.org/home/groups/maven/maven/maven2-snapshot</url>
<name>The Seasar Foundation Maven Snapshot Repository</name>
<url>dav:https://www.seasar.org/maven/maven2-snapshot</url>
</snapshotRepository>
</distributionManagement>
- repositoryが http://maven.seasar.org/maven2/ 以下に対応
- snapshotRepositoryが http://maven.seasar.org/maven2-snapshot/ 以下に対応
-- pom.xmlの<version/>で X.X.X-SNAPSHOT と -SNAPSHOT を付けると自動的にこちらにアップロードされる
- <repository/> へのデプロイ結果は http://maven.seasar.org/maven2/ 以下に対応
- <snapshotRepository/> へのデプロイ結果は http://maven.seasar.org/maven2-snapshot/ 以下に対応
-- pom.xmlの<version/>で X.X.X-SNAPSHOT と -SNAPSHOT を付けると自動的にこちらにアップロードされます。
*環境設定(settings.xml) [#lffd762c]
&color(#000,#bdf){SCP方式から移行する際にこのように変更する必要有り};
${user.home}/.m2/ に settings.xml というXMLファイルを作成します。
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<servers>
<server>
<id>maven.seasar.org (pom.xmlに書かれているrepositoryのidと合わせる)</id>
<username>(ユーザ名)</username>
<privateKey>(秘密鍵への絶対パス)</privateKey>
<passphrase>(秘密鍵のパスフレーズ)</passphrase>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
<server>
<id>maven.seasar.org</id>
<username>コミッタアカウントのユーザ名</username>
<password>コミッタアカウントのパスワード</password>
</server>
</servers>
</settings>
- 秘密鍵への絶対パスの記述例1
<privateKey>'C:\Documents and Settings\ユーザ名\Application Data\SSH\seasar.ppk'</privateKey>
- 秘密鍵への絶対パスの記述例2
<privateKey>C:\Software\PuTTY\keys\seasar_id_rsa</privateKey>
※ パスワードを記述するため、settings.xmlの取り扱いには気をつけてください。
* デプロイ実行 [#vf3421b4]
※パスフレーズを記述するため、settings.xmlの取り扱いには気をつけてください。
*デプロイ実行 [#vf3421b4]
pom.xmlが置かれているディレクトリで次のコマンドを実行してください。
mvn clean source:jar javadoc:jar deploy -DupdateReleaseInfo=true
※s2container, s2jsf, s2dao, teedaはpom.xmlで設定してありますので、↓のコマンドでOKです。
mvn clean deploy
成功すると、リモートレポジトリへデプロイされます。
(クリーンビルド → 単体テスト実行 → jarファイル作成 → Maven2リモートレポジトリへのデプロイ、が行われます。)
配布zipアーカイブの作成にはantを使用しているので、続けて
ant dist
してzipを作成してください。
※zip等の配布アーカイブを作成する場合は、Maven2リポジトリへデプロイしたjarを配布アーカイブに含めるように気をつけてください。(再度ビルドしないように)
*エラー集 [#n90e7371]
* デプロイ済みの不要なファイルの削除方法 [#re18c157]
[WARNING] repository metadata for: 'snapshot groupId:artifactId:version'
could not be retrieved from repository: maven.seasar.org due to an error:
Authentication failed: Cannot connect. Reason: Auth fail
[INFO] Error deploying artifact: Authentication failed: Cannot connect. Reason: Auth fail
デプロイ済みの不要なファイルを削除するには、WebDAVクライアントを使って削除します。下記にWindows XPでの例を示します。
- settings.xml ファイルがない、もしくは、ファイル名が誤っている
- パスフレーズが間違っている
- 鍵のパスが間違っている
- 秘密鍵の形式がOpenSSH形式になっていない
-- 正しい鍵の例1
-----BEGIN RSA PRIVATE KEY-----
MIICWQIBAAKBgQCmwMkULkJJM/aVvUZhuV+AdLGinjHzaVQ1aXvqrtQxsAienex/
b1RAbdCLhc0OCnFftGAcNbUP4418h7pcgCBGoj0uVlAlxQ8KT5qF2iXiQAS+5bmr
... 9行省略 ...
NH9tCMIrvyFg/EcCQHz6MHK5RuI5yA+xbKt7c/m7H8OE4j+JYOHg2zocKECcq8V9
NluYAUQIb/T2GFumUUeqi9gaNyaqbqmizNhgsiU=
-----END RSA PRIVATE KEY-----
-- 正しい鍵の例2
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,6ED082245EF38132
MIICWQIBAAKBgQCmwMkULkJJM/aVvUZhuV+AdLGinjHzaVQ1aXvqrtQxsAienex/
b1RAbdCLhc0OCnFftGAcNbUP4418h7pcgCBGoj0uVlAlxQ8KT5qF2iXiQAS+5bmr
... 9行省略 ...
NH9tCMIrvyFg/EcCQHz6MHK5RuI5yA+xbKt7c/m7H8OE4j+JYOHg2zocKECcq8V9
NluYAUQIb/T2GFumUUeqi9gaNyaqbqmizNhgsiU=
-----END RSA PRIVATE KEY-----
-- 使用できない鍵の例
PuTTY-User-Key-File-2: ssh-rsa
Encryption: aes256-cbc
Comment: user @ example.org
Private-Lines: 8
MIICWQIBAAKBgQCmwMkULkJJM/aVvUZhuV+AdLGinjHzaVQ1aXvqrtQxsAienex/
b1RAbdCLhc0OCnFftGAcNbUP4418h7pcgCBGoj0uVlAlxQ8KT5qF2iXiQAS+5bmr
... 9行省略 ...
NH9tCMIrvyFg/EcCQHz6MHK5RuI5yA+xbKt7c/m7H8OE4j+JYOHg2zocKECcq8V9
NluYAUQIb/T2GFumUUeqi9gaNyaqbqmizNhgsiU=
Private-MAC: 0ea6f0710af01cbf796afdab2043b20113419944
+ マイ ネットワークを開き、「ネットワーク プレースを追加する」を選択します。
#ref(webdav01.png)
+ 追加ウィザードで、「別のネットワークの場所の選択」を選択します。
#ref(webdav02.png)
+ インターネットまたはネットワークのアドレスにリポジトリのURLを入力します。
-- リリースリポジトリ: https://www.seasar.org/maven/maven2/org/seasar/プロジェクト名 (プロジェクト名はgroupIdでの指定、s2hoge -> hoge)
--- mavenプロジェクトのコミッタの場合、ルートリポジトリ ( https://www.seasar.org/maven/maven2/ )から指定できます。
-- スナップショットリポジトリ: https://www.seasar.org/maven/maven2-snapshot/org/seasar/プロジェクト名 (プロジェクト名はgroupIdでの指定、s2hoge -> hoge)
--- mavenプロジェクトのコミッタの場合、ルートリポジトリ ( https://www.seasar.org/maven/maven2-snapshot/ )から指定できます。
#ref(webdav03.png)
+ 認証を求められるので、コミッタアカウントの情報を入力します。
#ref(webdav04.png)
+ 適当な名前を入力して、このネットワーク プレースへのショートカットを作成します
#ref(webdav05.png)
+ 追加ウィザードを完了させます。
#ref(webdav06.png)
+ 削除したいファイルを選択し削除します。
-- 削除できるのは、所属プロジェクトのファイルのみです。所属していないプロジェクトのファイルは権限が足りないので削除できません。
#ref(webdav07.png)
* エラー集 [#n90e7371]
** 401 Unauthorized [#n5b91412]
[INFO] Error deploying artifact: Failed to transfer file: https://www.seasar.org/maven/maven2/org/seasar/... Return code is: 401 Unauthorized
- settings.xml ファイルがない、もしくは、ファイル名が誤っている
- ユーザ名、もしくは、パスワードが間違っている
** 無視して良いエラー [#t831a16a]
*** HTTP/1.1 401 Authorization Required [#td79fca8]
情報: Already tried to authenticate with 'maven webdav repository' authentication realm at www.seasar.org, but still receiving: HTTP/1.1 401 Authorization Required
上記のエラーが表示されても最後にBUILD SUCCESSFULと最後に表示されている場合は、このエラーは無視して構いません。これは、デプロイするプロジェクトより上位ディレクトリである org/seasar 部分のディレクトリを触ろうとした時に表示されるエラーで、実際にプロダクトをデプロイする際に成功している場合は、最後にBUILD SUCCESSFULと表示されます。
*コメント [#ha81887e]
#comment