无坑情形
讲道理,如果mybatis和mybatis-parent的版本号一致的话,大概率是不会遇到坑的。编译可以在IDEA中进行,也可以直接cmd编译。
下载并解压mybatis之后,在解压目录下直接mvn clean install
会报错:
没找到mybatis-parent。看下mybatis的pom.xml发现要依赖mybatis-parent:
于是下载mybatis-parent,然后解压后在解压目录下同样mvn install
。这一步可能可能会报错,java.lang.RuntimeException: Could not compute the year of the last git commit for file:
这是因为源码项目使用了 license-maven-plugin 插件,会给源文件添加 license 声明,声明里面有一个表达式 ${license.git.copyrightYears} 无法被替换, 从而报错 因为源码是从tag里面下载的zip压缩包,不含 .git 配置信息,所以插件拿不到正确的值,无法完成替换 解决办法就是在源码目录下创建一个新的git仓库即可:git init
。现在就可以“build success”了。
在最后编译mybatis前,打开mybatis的pom文件,修改这两个地方:
然后mvn clean install
,静待“build success”吧。
有坑情形
但是不排除某些人的自残倾向,非要用不同版本的mybatis和mybatis-parent,这样的话可能会遇到以下这些坑:
- “cannot resolve plugins xxx”的问题:
导致这个问题的原因是没有指定插件的版本号,在pom文件中为相应插件指定version即可,例如:
或者干脆注释掉:
- “Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:3.2.0 ”的报错,则参考这篇文章或者这篇文章。
- "Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M2"的报错,报错显示从central仓库下载插件的时候connection refused了,没办法,干脆直接跳过enforce约束来编译:
mvn install -Denforcer.skip=true
- “Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test”的问题,参考这里,我的在surefire这个插件下的configuration中加了如下配置:
希望历尽坎坷后你可以编译成功: