
複数個のclassから成るWebアプリケーションをwarで固めて客先に配布しています。
ここで、クラスに不具合が見つかって修正が入ると、
1.Antでプロジェクトを一括してコンパイル
2.更新されたソースだけがコンパイルされる
3.プロジェクト全体がwarにビルドされる
という手順を踏んでいます。
が。受け取った側がwarを展開すると、ファイルのタイムスタンプが全て展開された日時になってしまいます。
これでは、相手側でどのファイルがいつ修正されたのかわからん!という事態になっており、悩んでいます。
tarだとタイムスタンプは保持されるのですが、何か良い方法はないでしょうか。
No.3ベストアンサー
- 回答日時:
#1です。
jarファイルはファイル形式そのものは通常のZIPファイルと同じなので、unzipコマンドやWindows用のほかのツールを使っても大丈夫です。
ものによっては拡張子を.zipに変えないと認識しないアプリケーションもあるかもしれないですが。
>classのタイムスタンプを見れば、今回何が修正されたのかわかる
Aクラスが修正されたとして、それを参照しているBやCは修正が無くてもコンパイルされます。また、BやCを参照しているDはAを直接参照していなくてもコンパイルされます。
いろいろな場所から参照されている箇所を変更した場合には、リコンパイルされるクラスの数はフルビルドと大差なくなることもあります。
ソースの変更をバイナリ(.class)ファイルのタイムスタンプなどで管理するのはJavaの性質上無理があります。
さらに蛇足ですが…一部だけのコンパイルは危険です。定数の変更がきちんと反映されないことや、開発端末との時間設定のずれによって、ソースの変更がコンパイラやツールに正常に認識されない危険があります。
コンパイル時はなるべくフルビルドを行い、変更管理はソースをきちんと管理することで行ったほうがいいです。
ありがとうございます。解凍の件はunzipを使うことで解決しました。
また、部分コンパイルですが、変更したものだけ更新されると思っていたので大変助かりました。変更管理はキチンとしないといけませんので、開発メンバが触るソースと出荷するソースを完全に分離して管理し、毎回フルでビルドしたいと思います。
No.2
- 回答日時:
こんばんは。
jarコマンドは解凍時に現在のタイムスタンプへ変更してしまいます。
私も仕事上で苦戦しました。
別の解凍ツールで試してみてください。
No.1
- 回答日時:
展開されたファイルのタイムスタンプは展開に使用したツールに依存します。
まずは圧縮までに問題がなかったかを確認し、確認した内容も質問の補足として書いてください。
相手方が使用しているツールとその設定等を確認して、必要であれば設定の変更や使用するツールの指定などを行いましょう。
あと、蛇足かもしれませんが
>2.更新されたソースだけがコンパイルされる
については、「更新したソースファイル=リコンパイルされたclassファイル」ではありません。
相手側にソースファイルを一緒に送っているのでなければ、確認はできないと思うのですが。
この回答への補足
ありがとうございます。こちらからはAntで作成されたwarを送って、相手側ではjar xvf xxx.war ...のコマンドで展開しているのが現状です。Windowsに持ってきて調べたところ、アーカイブ自体にはタイムスタンプ等は保持されているようですね。
あと、後半部分ですが、一部ソースを修正してAntを走らせる→変更があったものだけリコンパイルされる→warが作成される→それに含まれるclassのタイムスタンプを見れば、今回何が修正されたのかわかる、という理論なのですが、いかがでしょうか・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPでコンパイルキャッシュのリ...
-
TOMCAT_HOMEって?
-
配列に対してsetText()は使えな...
-
TeXで図を挿入できません.助け...
-
javaが文字コードの影響でコン...
-
javax.servlet は存在しません...
-
「識別子がクラス名でも名前空...
-
c++Builder ver6.0のパッケー...
-
warファイルを展開するとタイム...
-
Eclipseで、プロジェクト名のと...
-
classファイルについて
-
javax.mailがimportできない
-
JSPのクラスをコンパイルできな...
-
正しいURL指定しているにもかか...
-
Mac版eclipse(Java)のsysout.に...
-
Eclipse・プロジェクトで、フォ...
-
html上で、バッチやexeファイル...
-
Eclipseでサーブレットを使用す...
-
マイクラjavaでForgeを入れたい...
-
WMPのインターネット接続で「サ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaが文字コードの影響でコン...
-
.jarファイルの中身って書き換...
-
c++Builder ver6.0のパッケー...
-
javax.servlet は存在しません...
-
サクラエディタでjavaのプログ...
-
IIS環境でJAVAを使用したい
-
Eclipse3.5EEでJavaのコンパイ...
-
日本語対応 逆コンパイラについて
-
javaの簡単なソースがコンパイ...
-
JAVAでC/C++の条件コンパイルの...
-
eclipseの構文エラーについて
-
TOMCAT_HOMEって?
-
warファイルを展開するとタイム...
-
「識別子がクラス名でも名前空...
-
「シンボルを見つけられません...
-
jasperとは
-
同一パッケージ内の継承について
-
配列に対してsetText()は使えな...
-
コンパイルができないのですが...
-
Strutsのエラー?それともサー...
おすすめ情報