Home > Java > Javaでも#identを実現する方法

Javaでも#identを実現する方法

  • Posted by: タムタム
  • 2007年12月19日 14:37
  • Java

  • Tags: Java

CVSやSubversionでは$Id$と記述しておくと、
"$Id: AppDao.java 258 2007-12-17 08:45:36Z tamtam $"
のように変換してくれます。

ソースレベルで見ると誰が最後に弄ったのかとソースのバージョンが分かるので便利なのですが、コンパイルしてバイナリファイルになるとこの情報は失われてしまいます。
例えば、test1.c と test2.c というソースから test.so というファイルを作るとしましょう。
test.soがポツーンと置いてある場合、「このsoはどのバージョンのソースで作られたものだろう・・・?」というときに、gccでは#identマクロを使うことで解決できます。

各ソースに↓を記述します。
#ident "$Id$"
そして↓を実行。
ident test.so

test.so:
     $Id: test1.c 124 2007-10-24 04:43:13Z tamtam $
     $Id: test2.c 124 2007-10-24 04:43:13Z tamtam $

このように、どのソースから作られたバイナリかを特定することができます。
普通はsoのファイル名にバージョン番号も入れるのが普通なのですがね・・。

これをJavaで実現する方法です。
ちなみに、Subversionやtracを使ってきちんとプロジェクト管理をしていれば全く問題ないと思います。
JARファイルのファイル名とマニフェストファイルにバージョン番号入れるだろうし。

というわけで、あくまでも方法論です。

まずJDK5以上であることが前提です。アノテーション使うので。

・IdentAnnotation.java

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface IdentAnnotation {
    String value();
}

使い方は↓

@IdentAnnotation("$Id$")
public class Hoge {}

確認方法

ident Hoge.class
Hoge.class:
     $Id: Hoge.java 124 2007-10-24 04:43:13Z tamtam $

JARファイルも圧縮をしなければ普通に見れます。

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
Listed below are links to weblogs that reference
Javaでも#identを実現する方法 from タムタムの日記

Home > Java > Javaでも#identを実現する方法

Search
Feeds

Return to page top