以下是java项目打war/jar包报错常见的坑与解决方法:
坑一:test
问题:
项目打包失败,报错如下:
Results :
Tests in error:
(..)
Tests run: 6, Failures: 0, Errors: 1, Skipped: 0
[INFO] ----------------------
[INFO] BUILD FAILURE
[INFO] ----------------------
这是因为在【项目\src\test\java】下编写了java测试文件,项目打包时会执行这些测试用例,如果报错,则不允许打包。
解决方法:
使用【-Dmaven.test.skip=true】跳过test步骤,使打包成功。
坑二:缺少依赖的jar包
问题:
项目报错缺少某些jar包,导致打包失败。
解决方法:
1.如果是缺少本地其它项目的jar包,则需要对本地其它项目执行install命令,使得其它项目的jar包部署到本地maven仓库;
然后再打包目标项目,就能找到依赖的jar包了。
2.如果是缺少远程maven仓库的jar包,则可能需要:
(1)修改maven程序的settings.xml文件中的仓库url,选择其它远程仓库(例如公司内部url)
例如修改【D:\apache-maven-3.5.0\conf\settings.xml】,增加以下部分:
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://repos.xxxcloud.com/repository/maven-public/</url>
</mirror>
</mirrors>
这样可以将请求远程仓库的url映射到上方的url。(mirrorOf为*)
(2)可能是jar包的版本设置冲突,此时可以使用idea右侧的maven projects中的show dependencies,查看依赖树,找到冲突jar包,记住一个正确的jar包版本号,然后修改pom.xml,对冲突的jar包指定version或exclude某些jar包。
坑三:checkstyle
问题:
控制台显示:
Starting audit...
之后就出现某几个文件错误,然后打包失败。
这是因为maven中引入了checkstyle组件,用来检查代码格式的,如果代码格式不符合规范,则不允许打包。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.13</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>6.11.1</version>
</dependency>
<dependencies>
......
解决方法:
可以在打包时增加【-Dcheckstyle.skip=true】,跳过该检查,使打包成功。
总结:
1.可以在idea->settings,搜索runner,在VM Options中输入参数,跳过某些检查,使打包成功。
例如跳过test与checkstyle步骤:
-Dmaven.test.skip=true -Dcheckstyle.skip=true
2.可以点击idea右侧的maven projects中的小图标(Toggle 'Skip Tests' Mode),跳过test步骤,使打包成功。
3.可以在pom.xml中增加配置,跳过test步骤,使打包成功。
<properties>
<skipTests>True</skipTests>
<jdk.version>1.8</jdk.version>
<liquibase.version>3.6.1</liquibase.version>
<war.finalname>mywar</war.finalname>
</properties>
相关文章
https://blog.youkuaiyun.com/weixin_35020262/article/details/114736794
https://blog.youkuaiyun.com/qq_21267357/article/details/92134842
后记:
package命令是项目打jar/war包命令
install命令会将打好的jar/war包布署到本地maven仓库,可以让其它项目使用
deploy命令会将打好的jar/war包布署到本地maven仓库和远程maven仓库