都元ダイスケ IT-PRESS このページをアンテナに追加 RSSフィード Twitter

最近は会社ブログしか書いてません。

2010-11-11

[][]自分用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で実装してみた次第。こっちのがライトでメンテナンスしやすいからね〜。

Connection: close