Jika Anda ingin menambahkan serialVersionUID yang tidak ada untuk banyak file, IntelliJ IDEA mungkin tidak berfungsi dengan baik. Saya membuat beberapa naskah sederhana untuk memenuhi tujuan ini dengan mudah:
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
Anda menyimpan skrip ini, misalnya add_serialVersionUID.sh
di ~/bin
folder Anda . Kemudian Anda menjalankannya di direktori root proyek Maven atau Gradle Anda seperti:
add_serialVersionUID.sh < myJavaToAmend.lst
.Lst ini menyertakan daftar file Java untuk menambahkan serialVersionUID dalam format berikut:
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
Script ini menggunakan alat JVK serialVer. Ini sangat ideal untuk situasi ketika Anda ingin mengubah sejumlah besar kelas yang tidak memiliki serialVersionUID di tempat pertama sambil mempertahankan kompatibilitas dengan kelas-kelas lama.
1L
sebagai ID Anda dan kenaikan ketika bentuk serial Anda berubah. (Lihat stackoverflow.com/questions/888335/… ).