今週は引き続き、プロトタイプで開発したものから今後共通化して利用できるものをJarライブラリ化する作業をしてますが、そのJarを上手く管理しないと意味がなくなってしまいます。
長らく関わっているWindowsFormベースのプロジェクトでも、機能ごとにdllは作成されているものの、管理が微妙だったため、バージョン違いや参照関係の複雑度が高く、不都合が多いです。
Mavenはローカルリポジトリやセントラルリポジトリ以外に自分達のリポジトリが作れるので、生成したJarはそこで一括して管理し、バージョンも管理しておけば良いのかなと思います。
で、今日は午前中にMaven Internal Repositoryの準備ができたのでメモ書き。
今まで行ってきたJavaEEプロトタイプ開発では、TracLightningをインストールして
などを行いました。
それぞれ個別にインストールして設定するのがベストとも思いましたが、いかんせん初めてのJavaEEだったので、学習コストを考慮して、楽できる所は楽する方針にしました。結果的には、色々まとめてやってくれるTracLightningは助かる、という感じです。
ちなみに従来開発では
- 情報共有サイトは存在しない(さすがにチケット管理はしますが…これも主に社内システム)
- ソース管理はVSS
- 定期ビルドはそもそもない。あるとしても必要なタイミングで人手で行う。
プロジェクトが多い気がします。まあ時代の流れについていけず、旧態依然としてるという情けない状態です。
.NET開発が多いので、Team Foundation Serverの導入も部内の一部でささやかれてますが、残念ながら中々具体的な動きになっていないようです。TFSは言語に依存しない、とも聞いているので、JavaEE開発でも利用する方向もあると思いますが、とりあえず自分が関わる次期案件ではプロトで使ったツールを踏襲しそうです。
……
…
で、本題。
TracLightningはデフォルトでmavenリポジトリが構築されているようで
http://TracLightningのURL/maven
へアクセスすると、空っぽですがページが見えます。
この実体フォルダは普通にインストールしていれば
C:\TracLight\projects\maven
となっているようです。
以下、成功した流れを記録。
リポジトリへ格納したいJarを生成するMavenプロジェクトにてpom.xmlに以下を追加します。
<distributionManagement>
<repository>
<id>department-repo</id>
<name>DepartmentRepository</name>
<url>dav:http://hogehoge/maven</url>
</repository>
</distributionManagement>
deloyする際にApache上でWebDAVなるプロトコルを利用するようなので、以下もpom.xmlに追加します。
<build>
〜 色々中略 〜
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav</artifactId>
<version>1.0-beta-2</version>
</extension>
</extensions>
</build>
スタートメニュー->すべてのプログラム->Trac->コマンドプロンプトで上記設定したプロジェクトのpom.xmlがみえるフォルダに行きます。
NetBeansをデフォルトインストールすると
C:\Users\kikutaro777\Documents\NetBeansProjects\プロジェクトフォルダ
となります。
で、コマンド実行
mvn deploy
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.146s
[INFO] Finished at: Fri Dec 21 17:16:49 JST 2012
[INFO] Final Memory: 12M/29M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:
deploy (default-deploy) on project BaseComponent: Failed to deploy artifacts: Co
uld not transfer artifact jp.co.hoge:BaseComponent:war:1.0 from/to hoge.maven (da
v:http://hogehoge/maven): Failed to transfer file: http://hogehoge/maven/jp/co/hoge/BaseComponent/1.0/BaseComponent-1.0.war. Return code is: 405 Method Not Allowed -> [Help 1]
のエラーが。TracLightningのApache設定ファイル
C:\TracLight\CollabNetSVN\httpd\conf\httpd.conf
にて以下2行追加(DavLockDBとDav On)しました。
#Add for using WebDAV
DavLockDB "C:\TracLight\CollabNetSVN\httpd\DavLock"
Alias /maven "C:\TracLight\projects\maven"
Options Indexes
Allow from all
#Add for using WebDAV
Dav On
TracLightningのサービスを再起動して再度デプロイすると
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.094s
[INFO] Finished at: Fri Dec 21 17:21:34 JST 2012
[INFO] Final Memory: 12M/29M
[INFO] ------------------------------------------------------------------------
と成功して、リポジトリに格納されました。
あとは利用する側のプロジェクトでpom.xmlに
<repositories>
<repository>
<id>department-repo</id>
<name>DepartmentRepository</name>
<url>http:hogehoge/maven</url>
</repository>
</repositories>
とリポジトリの参照を加えて、あとはdependencyタグに展開したJarの設定を記述すれば完成しました。
ふぅ。