maven編譯後參數名變var1...

想直接看解決方案的可以直接看最後。

事件起因

最近在做gradle項目遷移到maven,原因是我們使用jenkins做自動化CICD,CI 時會先從gitlab拉取源代碼進行編譯,由於我們編譯使用的gradle是打包成鏡像,以docker形式啓動的,所以每次CI時會去啓動鏡像,這時會先啓動gradle的守護進程,這個過程在jenkins下異常緩慢,導致每次CI時間過長,嘗試關閉啓動開啓守護進程,但是仍然會啓動一個jvm什麼的還是很慢,後來我們分析其實就是這種鏡像方式使用導致gradle啓動慢,而我們又沒辦法解決這個問題,所以只能將項目遷移回maven爲了提高效率。

那麼效率差多少呢?以我們項目得話,打包這個環節maven大概快3分鐘。還是很有必要的。

具體操作

下面說具體問題,我們使用spring boot + mybatis 做開發,在mapper接口中,有的開發人員在方法的參數列表中參數前沒有加註解@param指定映射後的參數名,原來在gradle下編譯後的class文件中,參數名還是正常的,mybatis會自動使用參數名作爲映射後的參數名,但maven編譯後發現參數名變成了var1這類,導致mybatis映射到xml中找不到對應的參數,報錯bindingException,所以在mybatis 的maven項目中,一定要配置打包保留參數名。下面是具體配置:

<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                        <encoding>UTF8</encoding>
                        <compilerArgs>
                            <arg>-parameters</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章