2016-08-09 17 views
2

この質問の素敵な、簡潔なタイトルは分かりません。コミット日付を表すJavaクラスに日付スタンプフィールドを自動的に追加するには

私の全体的な目標は、例外がキャッチされたときにその変数と一緒にエラーを出力できるように、クラスの日付、時刻、(場合によってはコミットID)を与える変数をソースコードに持たせることです私は簡単に悲しみを与えるソースコードのバージョンを追跡することができます。

私は2つのうちの1つを達成したいと思います。

public static final String commitTime = "yyyymmdd - hhmmss - <commitid>"; 

または内部クラスが多すぎると、何かがに追加:私は水銀やGitが変更を拾っているようにJavaファイルを編集するとき、私は新しいフィールドを取得するように変更しまったクラスたいです

public lass failname_stamp { 
    public static final String commitTime = "yyyymmdd - hhmmss - <commitid>"; 
} 

か、その効果に何か次のようなファイルの一番下。

これは水銀やgitに特有のものである必要はありませんが、それはそれらと関連する機能です。したがって、ファイルに対してコミットが行われると、そのようなデータをファイル自体に追加するプロセスが実行されます。

私のmercurialまたはgitインスタンス用のサードパーティ製プラグインでない場合、そのようなツールが私のIDE(eclipseとintelliJ)と統合する必要があると思います。

私は私のような上部のコメントフィールドを持つソースコードファイルを見ている知っている:

/** 
* @since 1.2 
*/ 

しかし、私は手動でのコメントを更新するために、人間に頼るより徹底し、具体的ではない何かをしたいと思います。

+0

類似の状況でグーグルを試みたところ、http://stackoverflow.com/あなたのJavaジャー、つまりユーザーがアクセスできるhttp:// stackoverflowの中の質問/ 6611171/how-to-insert-version-numbers。com/questions/690419/build-and-version-number-for-java-projects-ant-cvs-hudsonにあります。どちらも、ソースを変更する代わりに、プロパティファイルを使用して記述します。私はこれらのリンクがあなたの望むものとまったく同じだとは思わないが、多分彼らはあなたに代替のアプローチについてのアイディアを与えるだろう。 – ajb

+0

なぜそれが必要でしょうか?実行中のコードの全体的なバージョンを知りませんか?その全体的なバージョンに含まれていた特定のソースファイルのバージョンを見つけることができませんか?そうでなければ、より大きな問題があります。 – Andreas

+0

@アンドレアス、私は私のコードを使用している唯一の人ではない場合... –

答えて

1

手動で何らかのバージョンの文字列を追加しない限り、ソース自体はチェックインされているバージョンを知ることができませんが、それは面倒で失敗しやすいものです。

しかし、私はソースコードでこれを望みませんが、ビルド時にこの情報を生成したいと考えています(例えば、異なるビルド環境も異なる結果につながる可能性があります)オブジェクトコードと共に出荷されるファイル。

私は、Javaを話すことはありませんが、私は私のPythonのプロジェクトのためにその問題を解決:

  1. それがリポジトリから実行されると、コードバージョンを照会して使用され、例えばバグ/クラッシュレポートの場合Querying hg for the checked-out version
  2. リポジトリの外部で実行すると、プログラムは生成されたバージョンファイルを探します。私はそのようなあらかじめ生成されたバージョンファイルで自分のコードバンドルを出荷します。自動的に生成され、コンパイルファームで使用されているビルドスクリプトの中で触れられていないコードとバンドルされます。 Checking for presence of pre-generated version info, if code executed outside repository

コードにも同様のメカニズムを採用することを強くお勧めします。柔軟性があり使いやすいです。リポジトリのプロパティを照会し、コードバンドルに同梱されているプロパティファイルの使用にフォールバックします(存在しない場合は「不明なバージョン」と報告してください)。

関連する問題