一連のファイルに欠落しているserialVersionUIDを追加する場合、IntelliJ IDEAはうまく機能しない可能性があります。この目標を簡単に達成するための簡単なスクリプトを考え出します。
base_dir=$(pwd)
src_dir=$base_dir/src/main/java
ic_api_cp=$base_dir/target/classes
while read f
do
clazz=${f//\//.}
clazz=${clazz/%.java/}
seruidstr=$(serialver -classpath $ic_api_cp $clazz | cut -d ':' -f 2 | sed -e 's/^\s\+//')
perl -ni.bak -e "print $_; printf qq{%s\n}, q{ private $seruidstr} if /public class/" $src_dir/$f
done
あなたはと言う、このスクリプトを保存しadd_serialVersionUID.sh
、あなたの中~/bin
のフォルダ。次に、次のようにMavenまたはGradleプロジェクトのルートディレクトリで実行します。
add_serialVersionUID.sh < myJavaToAmend.lst
この.lstには、serialVersionUIDを追加するJavaファイルのリストが次の形式で含まれています。
com/abc/ic/api/model/domain/item/BizOrderTransDO.java
com/abc/ic/api/model/domain/item/CardPassFeature.java
com/abc/ic/api/model/domain/item/CategoryFeature.java
com/abc/ic/api/model/domain/item/GoodsFeature.java
com/abc/ic/api/model/domain/item/ItemFeature.java
com/abc/ic/api/model/domain/item/ItemPicUrls.java
com/abc/ic/api/model/domain/item/ItemSkuDO.java
com/abc/ic/api/model/domain/serve/ServeCategoryFeature.java
com/abc/ic/api/model/domain/serve/ServeFeature.java
com/abc/ic/api/model/param/depot/DepotItemDTO.java
com/abc/ic/api/model/param/depot/DepotItemQueryDTO.java
com/abc/ic/api/model/param/depot/InDepotDTO.java
com/abc/ic/api/model/param/depot/OutDepotDTO.java
このスクリプトは、JDK serialVerツールを使用します。古いクラスとの互換性を維持しながら、serialVersionUIDが設定されていない膨大な数のクラスを修正したい場合に最適です。
1L
IDとして定義し、シリアル化されたフォームが変更されたときに増分することをお勧めします。(stackoverflow.com/questions/888335/…を参照)。