यदि आप फ़ाइलों के एक समूह के लिए अनुपस्थित 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
फ़ोल्डर में कहते हैं । फिर आप इसे अपने मावेन या ग्रेडल प्रोजेक्ट की रूट डायरेक्टरी में चलाते हैं जैसे:
add_serialVersionUID.sh < myJavaToAmend.lst
इसमें .lst में निम्नलिखित प्रारूप में serialVersionUID जोड़ने के लिए जावा फ़ाइलों की सूची शामिल है:
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 टूल का उपयोग करती है। यह एक ऐसी स्थिति के लिए आदर्श है जब आप बड़ी संख्या में ऐसी कक्षाओं में संशोधन करना चाहते हैं, जिनमें पुरानी कक्षाओं के साथ संगतता बनाए रखते हुए पहली बार में कोई सीरियलवीयूआईडी सेट नहीं था।
1L
कि उदाहरण के लिए आपकी आईडी और वेतन वृद्धि के रूप में परिभाषित करें जब आपका क्रमबद्ध रूप बदलता है। (देखें stackoverflow.com/questions/888335/… )।