在我們的組織中,我們有幾個JHipster
生成的項目,它們使用的是3.0.0版本,我們之後沒有升級它們。Jhipster升級
我一直在努力升級他們中的一個在過去的5天,請看下面分解:
我曾嘗試三種不同的方法:
1.-使用jhipster:upgrade
工具
步驟:
此過程可能會分解成幾個步驟,如:
1.-創建本地文件夾npm
要能沒有persmission安裝不同版本jhipster
發電機發出
2:刪除所有舊設備yo
和jhipster
3.-克隆工程和創建開發分支
4.-擦除.jhipster
文件夾,以便實體不受升級
5.-一旦升級代碼運行,我們需要調整幾個文件/依賴所以mvn clean/install
工作
併發症
應用了所有這些步驟後,我發現,從Hibernate
的2nd level cache
拒絕上班,要我爲包括高速緩存的所有類,我嘗試了一些修復/解決方法,例如:
1.-從項目中刪除liquibase
2:配置DatabaseConfiguration.java
與舊的設置和下載庫的舊版本此
3.-配置dev.yml
文件,開始在舊版本
4.-禁用2nd level cache
這樣做了以後cache
和liquibase
不代表問題,但是,我們去另一個複雜功能,這一次涉及RememberMe
服務,JhipsterProperties
參數爲構造函數來爲空,我調試了一會兒,沒有找到相關的信息是,並決定放棄這一點,並嘗試用方法2
2.-手動重新創建升級步驟。
對於這種方法,我跟隨在github上找到該腳本:https://github.com/jhipster/generator-jhipster/issues/3761
我在本地安裝3.4.0
版本的Jhipster
嘗試和平穩過渡,我不刪除實體與方法1,但現在項目文件只是將無法裝入,則upgrade_branch
變得有彈性,並不管我做什麼,我最終需要刪除的項目,並重新克隆它
3.-使用項目根文件夾中jhipster
命令
我使用的版本3.4.0
這太
升級過程運行平穩,在package.json
文件更改版本和鏈接精細到數據庫第一次嘗試(除不必再刪除liquibase
,其升級時重新創建本身)
但是我們面臨與RememberMe
令牌一個新問題:Custom Persistence RememberMeServices]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: key cannot be empty or null
的一點點研究:
有許多報告和git-hub票證說明jhipster upgrade
無法正常工作,事實上,目前在最新版本中,用戶被告知可能需要按照手動方式升級這張票:https://github.com/jhipster/generator-jhipster/issues/5883
我還諮詢了前同事誰嘗試這樣做,忽視,這是很容易使一個新的項目,並複製必要的代碼,而不是試圖手動遷移衝突的代碼片段,這樣做後引起升級
現在,我還閱讀了git hub門票,許多用戶似乎無縫升級他們的項目,所以我的問題是:
1.-我是否面臨與其他開發人員相同的問題,但無法知道足夠的技術以解決問題?
2.-有沒有解決所有這些問題(二級緩存和JhipsterProperties沒有按住/不作爲變量傳遞給構造函數)?
編輯
我在JHipsterProperties
找到答案缺少鍵。當運行yo jhipster
時,它詢問您是否要覆蓋一系列文件,我只是將所有文件都標記爲yes,因此它覆蓋了application.yml
,其中存儲了屬性的密鑰,而不是恢復它或創建新文件。我試圖克隆從主項目後,再次運行它,它通過選擇不要覆蓋application.yml
(但在覆蓋這些文件的其餘部分)工作得很好
EDIT 2
我終於成功地整理休眠緩存發行者:
1。所有(48)實體
2:Jhipster隊現在默認緩存區域爲jhipster配置
cm.createCache(org.wwarn.drugquality.domain.AntiretroviralSurveyData.class.getName(), jcacheConfiguration);
cm.createCache(org.wwarn.drugquality.domain.Country.class.getName(), jcacheConfiguration);
等等: - 手動添加緩存在CacheConfiguration.java
文件中的所有實體,如本性能看起來像這樣:
hibernate.cache.region.factory_class: io.github.jhipster.config.jcache.NoDefaultJCacheRegionFactory
我不得不把它改成這樣:
hibernate.cache.region.factory_class: org.hibernate.cache.jcache.JCacheRegionFactory
而現在它工作得很好
前端被打破,許多定製代碼將需要進行修改/替換,但我終於到我的項目升級從v3.0.0
到v4.0.8
(使用yo jhipster
命令,升級工具只是對我不起作用)現在應用程序在後端滾動平穩,並準備好慢遷移到Angular 2-4
如果沒有細節,你的第二個問題是很難回答的。通常情況下最好分解問題。 –
'4.擦除.jhipster文件夾,以便實體不受升級影響'這看起來很奇怪,通常你寧願保留它們並用'yo jhipster --with-entities'重新生成 –
@GaëlMarziou我擦除了.jhipster文件夾,以便實體上的自定義代碼沒有被擦除,這在第一次升級嘗試中發生了 – Steven