高版本的 lombok 和 tomcat 7 插件沖突問(wèn)題
在開(kāi)發(fā)期間,當(dāng)我們使用 tomcat7-maven-plugin 來(lái)作為運(yùn)行環(huán)境運(yùn)行我們項(xiàng)目使,如果我們項(xiàng)目中使用了 1.16.20 及以上版本的 lombok 包,項(xiàng)目啟動(dòng)時(shí)會(huì)報(bào)錯(cuò):
for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
原因在于,從 1.16.20 開(kāi)始 lombok 包中有了一個(gè)叫 module-info.class 的文件,而低版本的 tomcat 不能識(shí)別這個(gè)文件,從而導(dǎo)致運(yùn)行時(shí)出錯(cuò)。
其實(shí)這個(gè)問(wèn)題對(duì)于我們而言不是問(wèn)題,因?yàn)轫?xiàng)目部署時(shí),肯定不會(huì)部署到 tomcat 7 上,至少是 tomcat 8.5 。
對(duì)于這個(gè)問(wèn)題,解決辦法有 3 個(gè):
-
辦法 1:使用 tomcat8-maven-plugin ,代替 tomcat7 ;
-
辦法 2:使用低版本的 lombok,例如,
1.14.x
的最高版本1.14.8
。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-680378.html -
辦法 3:將 lombok 的
<scope>
設(shè)置為provided
,這樣,maven 在打包時(shí)就不會(huì)將 lombok 包含在 jar/war 包內(nèi)。我們對(duì) lombok 的使用也就是在編譯時(shí)使用,運(yùn)行時(shí)不需要它。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-680378.html
到了這里,關(guān)于Maven之高版本的 lombok 和 tomcat 7 插件沖突問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!