Jhipster為我們提供了實體的相關指令,但是從圖中可以看到并沒有删除實體的操作
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmL58UYwonbV9CXt92YuIXdn1Wauk2Lc9CX6MHc0RHaiojIsJye.jpg)
而且我們再次輸入:yo jhipster:entity User 時,提供的選項中也沒有清除這一選項
這也就意味着,我們将手動删除這個實體相關的所有檔案(entity: domain, repository, rest, test, Angularjs controller & services, HTML view, link in menu, HTML view),可能還将面臨清理不徹底的問題,一旦我們清理不徹底,下次更新這個微服務時,我們删除的這個實體又會自動生成
那麼如何才能徹底删除?我在國外的一個網站上終于找到了一種方式,那就是腳本删除,指令如下:
#!/usr/bin/env bash
echo;
if [ -z "$1" ];
then
printf "Required argument GROUP_ID你輸入的 GROUP_ID 是 is not set. \nUsage: ./delete-entity.sh GROUP_ID ENTITY_NAME.\n";
exit 1;
else
GROUP_ID=$1;
echo "你輸入的 GROUP_ID 是 '$1'.";
fi
if [ -z "$2" ];
then
printf "Required argument ENTITY_NAME is not set. \nUsage: ./delete-entity.sh GROUP_ID ENTITY_NAME .\n";
exit 1;
else
ENTITY_NAME=$2;
JAVA_ENTITY_NAME=`echo ${ENTITY_NAME:0:1} | tr '[a-z]' '[A-Z]'`${ENTITY_NAME:1}
echo "你輸入的實體名稱是 '$2'."
echo "即将删除您的實體相關資訊:";
echo "domain, repository, rest, test, Angularjs controller & services, HTML view, link in menu, HTML view";
fi
JAVA_ENTITY_NAME=`echo ${ENTITY_NAME:0:1} | tr '[a-z]' '[A-Z]'`${ENTITY_NAME:1}
UNDERSCORED_FOLDER_NAME=`echo ${ENTITY_NAME} | sed -r 's/([a-z0-9])([A-Z])/\1-\L\2/g'`
QUESTION=$'如果你想在将來重新生成實體,你可以選擇保留實體自定義配置檔案(.jhipster/'${JAVA_ENTITY_NAME}'.json)\n你想删除實體定義檔案嗎?(yes or no)'
while true; do
read -p "${QUESTION}" yn
case $yn in
[Yy]* ) rm -rf ./.jhipster/${ENTITY_NAME}.json; break;;
[Nn]* ) break;;
* ) echo "Please answer yes or no.";;
esac
done
echo;
echo "Starting to delete files...";
rm -rf src/main/resources/config/liquibase/changelog/*_added_entity_${JAVA_ENTITY_NAME}.xml
rm -rf src/main/java/${GROUP_ID}domain/${JAVA_ENTITY_NAME}.java
rm -rf src/main/java/${GROUP_ID}repository/${JAVA_ENTITY_NAME}Repository.java
rm -rf src/main/java/${GROUP_ID}service/${JAVA_ENTITY_NAME}Service.java
rm -rf src/main/java/${GROUP_ID}service/${JAVA_ENTITY_NAME}QueryService.java
rm -rf src/main/java/${GROUP_ID}service/impl/${JAVA_ENTITY_NAME}ServiceImpl.java
rm -rf src/main/java/${GROUP_ID}repository/search/${JAVA_ENTITY_NAME}SearchRepository.java
rm -rf src/main/java/${GROUP_ID}web/rest/${JAVA_ENTITY_NAME}Resource.java
rm -rf src/main/java/${GROUP_ID}web/rest/dto/${JAVA_ENTITY_NAME}DTO.java
rm -rf src/main/java/${GROUP_ID}web/rest/dto/${JAVA_ENTITY_NAME}Criteria.java
rm -rf src/main/java/${GROUP_ID}web/rest/mapper/${JAVA_ENTITY_NAME}Mapper.java
rm -rf target/generated-sources/${GROUP_ID}web/rest/mapper/${JAVA_ENTITY_NAME}MapperImpl.java
rm -rf src/main/webapp/app/entities/${UNDERSCORED_FOLDER_NAME}/*
rm -rf src/test/java/${GROUP_ID}web/rest/${JAVA_ENTITY_NAME}ResourceIntTest.java
rm -rf src/test/gatling/simulations/${JAVA_ENTITY_NAME}GatlingTest.scala
rm -rf src/test/javascript/spec/app/entities/${UNDERSCORED_FOLDER_NAME}/*
rm -rf src/test/javascript/spec/app/entities/${UNDERSCORED_FOLDER_NAME}
rm -rf src/main/webapp/i18n/en/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/fr/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/ru/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/uz/${ENTITY_NAME}.json
echo "Deleting entity '${ENTITY_NAME}' is completed.";
echo;
echo "-----------------------------------------------------";
echo "Do not forget to manually correct these files also: ";
echo "-----------------------------------------------------";
echo " --> src/main/webapp/index.html"
echo " --> src/main/webapp/scripts/compopnents/navbar.html"
echo " --> src/main/webapp/i18n/**/global.json"
echo " --> src/main/resources/config/liquibase/master.xml"
echo " --> src/main/resources/config/mongeez/master.xml"
複制該代碼,儲存delete-entity.sh,檔案字尾為.sh,我們将這個檔案置于這個項目的根目錄中
隻需要執行:
delete-entity.sh [package]
/
[entityName]
如删除User:
delete-entity.sh me
/
zhengjie
/
User
注意:
package在這裡不能使用.,不然會找不到檔案,需要使用/,最後也需要加上/
彈出如下視窗,輸入yes,即可徹底删除
注意:有些東西是需要手動更新的,如
src/main/webapp/index.html
src/main/webapp/scripts/compopnents/navbar.html
src/main/webapp/i18n/**/global.json
src/main/resources/config/liquibase/master.xml (if you use liquibase)
src/main/resources/config/mongeez/master.xml (if you use mongodb)
啟動項目,發現報錯
進入目錄,
src/main/resources/config/liquibase/master.xml
删除檔案中報錯的行即可。
原位址:https://www.zhengjie.me/blog/498.html
參考位址:https://stackoverflow.com/questions/28226336/how-to-delete-an-entity-after-creating-it-using-jhipster