2017-07-25 257 views
2

在我們的組織中,我們有幾個JHipster生成的項目,它們使用的是3.0.0版本,我們之後沒有升級它們。Jhipster升級

我一直在努力升級他們中的一個在過去的5天,請看下面分解:

我曾嘗試三種不同的方法:

1.-使用jhipster:upgrade工具

步驟:

此過程可能會分解成幾個步驟,如:

1.-創建本地文件夾npm要能沒有persmission安裝不同版本jhipster發電機發出

2:刪除所有舊設備yojhipster

3.-克隆工程和創建開發分支

4.-擦除.jhipster文件夾,以便實體不受升級

5.-一旦升級代碼運行,我們需要調整幾個文件/依賴所以mvn clean/install工作

併發症

應用了所有這些步驟後,我發現,從Hibernate2nd level cache拒絕上班,要我爲包括高速緩存的所有類,我嘗試了一些修復/解決方法,例如:

1.-從項目中刪除liquibase

2:配置DatabaseConfiguration.java與舊的設置和下載庫的舊版本此

3.-配置dev.yml文件,開始在舊版本

4.-禁用2nd level cache

這樣做了以後cacheliquibase不代表問題,但是,我們去另一個複雜功能,這一次涉及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.0v4.0.8(使用yo jhipster命令,升級工具只是對我不起作用)現在應用程序在後端滾動平穩,並準備好慢遷移到Angular 2-4

+1

如果沒有細節,你的第二個問題是很難回答的。通常情況下最好分解問題。 –

+1

'4.擦除.jhipster文件夾,以便實體不受升級影響'這看起來很奇怪,通常你寧願保留它們並用'yo jhipster --with-entities'重新生成 –

+0

@GaëlMarziou我擦除了.jhipster文件夾,以便實體上的自定義代碼沒有被擦除,這在第一次升級嘗試中發生了 – Steven

回答

2

升級的大部分問題都與Windows和紗線有關。如果你使用Linux或OSX和npm,你的狀態會更好。另外,如果你經常運行它,那麼問題將比你所經歷的大版本更容易解決。

這個工具非常有用,但它還是比較新的,隨着時間的推移,事情會變得更好。

您可以通過只讀its code手動運行upgrade的步驟,它很容易遵循並閱讀its documentation

+0

我使用Linux和舊版本的npm(3.10.10):(**如果你經常運行它**這就是爲什麼我嘗試3.4.0所以它不是一個巨大的飛躍,但仍然沒有運氣**手動運行**我沒有想過遵循源代碼,本週我將有一個去 – Steven

+1

我終於得到它在v4.0.8工作,請找到編輯解決方案,不知道我在做正確的事情,但至少現在起作用了 – Steven