
複数個の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で質問しましょう!
似たような質問が見つかりました
- フリーソフト Windowsのフリーソフト「拡張コピー」のタイムスタンプ関係の仕様は、タイムゾーンを反映しますか? 2 2022/06/21 02:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- 法人税 電子帳簿保存法について 1 2022/04/07 11:17
- その他(クラウドサービス・オンラインストレージ) VPN通信に遜色ないクラウドサービスはありますか? 4 2022/08/05 16:19
- サーバー FFFTPで特定サイトだけUploadできない 4 2022/08/27 14:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) エクセルの保護ビューについて 1 2022/10/20 11:19
- Windows 10 Windows10のメタデータの「メディアの作成日時」は、タイムゾーンによって表示が変わりますか? 3 2022/06/21 02:30
- Excel(エクセル) Excelで漢字人名が勝手に並び変わる(続) 4 2023/03/21 21:28
- USBメモリー・SDカード・フラッシュメモリー SDカードの修復について 4 2022/08/30 08:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DOS窓でJavaファイルの実行がで...
-
.jarファイルの中身って書き換...
-
javaが文字コードの影響でコン...
-
LaTeXでのアンダーバーの入力
-
c++Builder ver6.0のパッケー...
-
サクラエディタでjavaのプログ...
-
Java コンパイル
-
apache2.0.x系列でのPHPのイン...
-
CreateProcessのコマンド・ライ...
-
Javaで作製したプログラムはJVM...
-
vs codeはオフラインでも使用で...
-
Eclipseのアンインストールの仕方
-
html上で、バッチやexeファイル...
-
Eclipseで、プロジェクト名のと...
-
ブラウザではなくパソコンにFla...
-
Javascriptの値をJava(JSP)へ渡...
-
VisualStudioでC++クラスを追加...
-
どちらを選択すればいいですか?
-
このページでスクリプトエラー...
-
javaクラスファイルをEclipseで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.jarファイルの中身って書き換...
-
javaが文字コードの影響でコン...
-
IIS環境でJAVAを使用したい
-
javax.servlet は存在しません...
-
__gcクラスから、__nogcクラス...
-
eclipseの構文エラーについて
-
Javaのコンパイル結果が表示さ...
-
日本語対応 逆コンパイラについて
-
サクラエディタでjavaのプログ...
-
コンパイルができないのですが...
-
Eclipse3.5EEでJavaのコンパイ...
-
javaの簡単なソースがコンパイ...
-
逆コンパイルの見方について
-
eclipseの設定のJREとコンパイ...
-
TOMCAT_HOMEって?
-
Strutsのエラー?それともサー...
-
TeXで図を挿入できません.助け...
-
warファイルを展開するとタイム...
-
文字化けについての質問
-
「シンボルを見つけられません...
おすすめ情報