バグレポートまたは機能しないメッセージを受け取ったとき、私の最初の質問の1つは、常にどのバージョンですか?さまざまなビルドがテストの多くの段階にあるため、これを計画および展開することは、多くの場合、重要な質問です。
Java JAR(ear、jar、rar、war)ファイルをリリースする場合、JARを調べて、リリースされたJARのソースと同じブランチ、バージョン、またはタグに切り替えることができるようにしたいと思います。
svnチェックアウトのバージョン情報が作成されたビルドに残るようにantビルドプロセスを最適に調整するにはどうすればよいですか?
私は次のように考えていました:
- VERSIONファイルを追加しますが、どのような内容ですか?
- 情報をMETA-INFファイルに保存しますが、どのプロパティの下でどのコンテンツを使用しますか?
- ソースを結果アーカイブにコピーする
- コンパイラが残した場所にキーワードを含むすべてのソースにsvn:propertiesを追加しました
現在のファイル/ディレクトリを調べるだけのsvninfoとは対照的に、サブツリー全体をスキャンするため、svnversionアプローチ(受け入れられたanwser)を使用することになりました。このために、antファイルでSVNタスクを定義して、移植性を高めました。
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask">
<classpath>
<pathelement location="${dir.lib}/ant/svnant.jar"/>
<pathelement location="${dir.lib}/ant/svnClientAdapter.jar"/>
<pathelement location="${dir.lib}/ant/svnkit.jar"/>
<pathelement location="${dir.lib}/ant/svnjavahl.jar"/>
</classpath>
</taskdef>
すべてのビルドがWebサービスになるわけではありません。アプリケーションサーバーで更新されるため、デプロイ前のearファイルは同じ名前のままにする必要があります。ファイルを実行可能にすることはまだオプションですが、それまではバージョン情報ファイルを含めるだけです。
<target name="version">
<svn><wcVersion path="${dir.source}"/></svn>
<echo file="${dir.build}/VERSION">${revision.range}</echo>
</target>
参照:
svnrevision:http
://svnbook.red-bean.com/en/1.1/re57.html
svn info http://svnbook.red-bean.com/en/1.1/re13.html
subclipse
svn task:http: //subclipse.tigris.org/svnant/svn.html
svnクライアント:http ://svnkit.com/