项目场景:
写了一个方法,输入一个Integer集合,根据集合的内容,生成对应的时间范围,比如输入{1,2},输出一个对象集合,对象里有startDate\endDate\year\month\displayName参数。
问题描述
自测main方法,idea没有提示有问题,但是一旦构建就出现 找不到符号,简直挠破头皮
难不成构建用的是历史的数据,那我maven clear一下再试试,果然clear之后再次构建就成功了,
本以为好了,开始maven打包,结果还是出问题了,提示 找不到符号,明明有的:
不信邪的我,开始给maven 换一个打包命令,加上-e,虽然耗时很久,但结果成功了……
原因分析:
第一次打包命令:mvn clean package -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=true
第二次打包命令:mvn -U clean compile install -e -X -Dmaven.test.skip=true
说明:
mvn clean 清空生成的文件
mvn package 生成target目录,编译、测试代码,生成测试报告,生成jar/war文件
mvn -Dmaven.compile.fork=true 参数,用以指明多线程进行编译
mvn -U 强制更新snapshot类型的插件或依赖库(否则maven一天只会更新一次snapshot依赖);
mvn compile 编译你的项目
mvn install -Dmaven.test.skip=true 把自定义的maven项目,安装至本地仓库,跳过测试
mvn -e, --errors 控制Maven的日志级别,产生执行错误相关消息;
mvn -X, --debug 控制Maven的日志级别,产生执行调试信息;
分析:
package:将包打到自己的target下
install:将包打到自己的target下,且上传到本地仓库给其他项目使用
结论:
我总是用package打包,但是引用的maven本地仓库里的其他模块的jar还是老的,所以总是找不到,修改成了install,重新上传了一下。
解决方案:
- 执行了mvn clean,构建通过,main方法执行正常。
- 执行了mvn -U clean compile install -e -X -Dmaven.test.skip=true,整个项目打包正常。