Si desea agregar el serialVersionUID ausente para un grupo de archivos, IntelliJ IDEA puede no funcionar muy bien. Presento un script simple para cumplir este objetivo con facilidad:
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
Guarda este script, digamos como add_serialVersionUID.sh
en su ~/bin
carpeta. Luego lo ejecuta en el directorio raíz de su proyecto Maven o Gradle como:
add_serialVersionUID.sh < myJavaToAmend.lst
Este .lst incluye la lista de archivos Java para agregar el serialVersionUID en el siguiente formato:
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
Este script usa la herramienta JDK serialVer. Es ideal para una situación en la que desea modificar una gran cantidad de clases que no tenían un serialVersionUID establecido en primer lugar, manteniendo la compatibilidad con las clases antiguas.
1L
como su ID e incremente cuando cambie su forma serializada. (Ver stackoverflow.com/questions/888335/… ).