Bir sürü dosya için serialVersionUID eksiklerini eklemek istiyorsanız, IntelliJ IDEA çok iyi çalışmayabilir. Bu hedefi kolaylıkla yerine getirmek için basit bir senaryo hazırladım:
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
Bu komut dosyasını, klasörünüzde olduğu add_serialVersionUID.shgibi kaydedin ~/bin. Sonra Maven veya Gradle projenizin kök dizininde çalıştırın:
add_serialVersionUID.sh < myJavaToAmend.lst
Bu .lst, serialVersionUID öğesini aşağıdaki biçimde eklemek için Java dosyalarının listesini içerir:
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
Bu komut dosyası JDK serialVer aracını kullanır. Eski sınıflarla uyumluluğu korurken, serialVersionUID ilk başta ayarlanmamış çok sayıda sınıfı değiştirmek istediğinizde durum için idealdir.
1L, serileştirilmiş formunuz değiştiğinde örneğin kimliğiniz ve artışınız olarak tanımlamanızı öneririm . (Bkz. Stackoverflow.com/questions/888335/… ).