天天看點

Jhipster 如何徹底删除Entity

Jhipster為我們提供了實體的相關指令,但是從圖中可以看到并沒有删除實體的操作

Jhipster 如何徹底删除Entity

而且我們再次輸入:yo jhipster:entity User 時,提供的選項中也沒有清除這一選項

Jhipster 如何徹底删除Entity

這也就意味着,我們将手動删除這個實體相關的所有檔案(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,即可徹底删除

Jhipster 如何徹底删除Entity

注意:有些東西是需要手動更新的,如

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)
           

啟動項目,發現報錯

Jhipster 如何徹底删除Entity

進入目錄,

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