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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章