自分用Maven Archetype

さて、Javaで「何か作ろう」って思った時、みなさんどうします? 書き捨てならば、どうでもいいと思うんですが、少々真面目に作っていこうかな、と思ったら、色々な開発環境整備が大変です。

Eclipse+Maven環境で開発をするのが好きな人は、とりあえず mvn archetype:generate でプロジェクトを作り、mvn eclipse:eclipseEclipse用の基本メタデータを生成し、そしてEclipseにインポートする、なんてことをしているかもしれません。

  1. Mavenプロジェクトとして生成
  2. Eclipseの基本メタデータを生成
  3. Eclipseにimport
  4. 自分用のEclipse,Checkstyle,FindBugs設定を生成
  5. 自分用好みのOSSライブラリをpomのdependencyに追加…

なんていうステップが基本的な手順かな、と思ってます。ただ、これが意外とめんどくさい。maven-archetype-quickstartは汎用で作ってあるので、めぼしい設定はなにもしてくれない。じゃあ、自分用のArchetypeを作ってしまえ、と思った。

$ mvn archetype:generate \
    -DarchetypeRepository=http://maven.xet.jp/release \
    -DarchetypeGroupId=jp.xet.archetype \
    -DarchetypeArtifactId=daisuke-archetype-quickstart \
    -DarchetypeVersion=1.1

追記:ちなみに、バージョンアップはこつこつと続けているので、最新版はリポジトリを直接確認してくださいね。

ちょっとコマンドライン長いけど。自分は多用するだろうから、~/bin/newjavap とか、そういうシェルスクリプトとか作っておこう。

[INFO] Scanning for projects...
(略)
[INFO] Archetype defined by properties
Define value for property 'groupId': : jp.xet.sample[enter]
Define value for property 'artifactId': : foo[enter]
Define value for property 'version': 1.0-SNAPSHOT: : [enter]
Define value for property 'package': jp.xet.sample: : [enter]
Define value for property 'copyrightUser': : Daisuke Miyamoto[enter]
Define value for property 'copyrightYear': : 2010[enter]
Confirm properties configuration:
groupId: jp.xet.sample
artifactId: foo
version: 1.0-SNAPSHOT
package: jp.xet.sample
copyrightUser: Daisuke Miyamoto
copyrightYear: 2010
Y: : y[enter]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 23.252s
[INFO] Finished at: Thu Nov 11 15:49:04 JST 2010
[INFO] Final Memory: 9M/81M
[INFO] ------------------------------------------------------------------------
$ ls -l
total 0
drwxr-xr-x 9 daisuke admin 306B 11 11 15:49 foo/
$ tree -a foo
foo
├── .checkstyle
├── .classpath
├── .fbprefs
├── .project
├── .settings
│   ├── checkstyle.xml
│   ├── findbugs.xml
│   ├── org.eclipse.core.resources.prefs
│   ├── org.eclipse.core.runtime.prefs
│   ├── org.eclipse.jdt.core.prefs
│   ├── org.eclipse.jdt.launching.prefs
│   ├── org.eclipse.jdt.ui.prefs
│   ├── org.eclipse.ltk.core.refactoring.prefs
│   ├── org.eclipse.pde.prefs
│   ├── org.eclipse.wst.sse.core.prefs
│   ├── org.eclipse.wst.validation.prefs
│   └── org.maven.ide.eclipse.prefs
├── pom.xml
└── src
├── main
│   ├── java
│   │   └── jp
│   │   └── xet
│   │   └── sample
│   └── resources
└── test
├── java
│   └── jp
│   └── xet
│   └── sample
└── resources

これをEclipseにimportすれば、プロジェクトの設定整備は完了です。

  • ソースファイルにはApache License v2のヘッダがつく。
  • Eclipse,Checkstyle,FindBugs設定は俺流。ちょっと厳しいよ?w
  • dependencyもオレ流。
  • m2eclipse前提のEclipse設定。
  • なぜかこの期に及んで、まだJava5設定のプロジェクトを吐くw

まぁ、上記の通り、かなりオレオレ仕様なので、みんなが喜ぶかどうかは微妙。なので敢えての daisuke-archetype-quickstart という命名です。しかし、Jiemamyで採用してる設定ルールでもあります。

まぁ、自分色に染めたければ、フォークとかしちゃえばいいんじゃないですかね。

ソースはココ。Apache License v2です。
https://github.com/dai0304/daisuke-archetype-quickstart

$ git clone git://github.com/dai0304/daisuke-archetype-quickstart.git

ちなみに初git体験です。@kenchanにもらったgit本読みながらがんばっちょるよ。

あれ、Strict Java Pluginは?

実は以前、Strict Java Plugin とかいう、同じ役目を持ったEclipseプラグインを作ったのだけど、あまりにも適当に作り過ぎて、バグが多い。そして、m2eclipse設定じゃなくてQ4E設定だったりして、自分の中でも古くなってしまった。

そして、メンテする元気もないので、まぁ軽くArchetypeで実装してみた次第。こっちのがライトでメンテナンスしやすいからね〜。