maven编译项目报错了?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven编译项目报错了?相关的知识,希望对你有一定的参考价值。

maven编译项目报错了

BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.932 s
[INFO] Finished at: 2020-09-06T19:27:48+08:00
[INFO] Final Memory: 15M/170M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.5.2:install (default-cli) on project system: The packaging for this project did not assign a file to the build artifact -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[

参考技术A 其实啊,搞编程,解决错误问题,占很大一部分。要学会自己用百度,最好用google,去解决这些问题。
说真的,绝大部分开发遇到的错误,网上早就有累死的案例可以参照,只需要动动手,想一想,就能解决。
参考技术B 看看maven的本地仓库相应的编译插件有没有问题。
我的本地仓库中的依赖包都是用的阿里云的镜像仓库下载的。

SpringBoot项目 - Maven Build Lombok 报错

先抛结论

被Lombok @Builder 和 @UtilityClass 修饰的类成员变量不能通过 import static 方式引入。


今天遇到了一个很诡异的问题,一个SpringBoot项目,突然在某次提交之后Maven编译就开始报错了。报错信息通篇是找不到那些标记了@Data的类所自动生成的 Getter方法和Setter方法,还夹杂着一些莫名其妙的无法在静态类中引用静态方法(源码绝对是正常的,不存在此类引用)

翻遍了百度之后,尝试了各种方式无果,包括:

  1. 提升Maven-compiler-plugin版本
  2. 提升Lombok版本
  3. 增加Maven-compiler-plugin的annotationProcessorPaths配置
  4. 其他江湖偏方

最终无奈,找到了Google,没想到这个问题在外网也是各热门问题,不得不说StackOverflow真的是牛逼,


StackOverflow上问题的链接:
https://stackoverflow.com/questions/34358689/maven-build-cannot-find-symbol-when-accessing-project-lombok-annotated-methods
也感谢这位老哥,一下子点醒了我。然后顺藤摸瓜找到了以下内容

https://github.com/rzwitserloot/lombok/issues/2044

https://github.com/rzwitserloot/lombok/wiki/LOMBOK-CONCEPT:-Resolution
https://github.com/rzwitserloot/lombok/issues/979

第一个是我认为讲的最清楚的一个。

大概意思就是 @Builder@UtilityClass类的成员不能通过import static方法引入,举的例子是比如a.b.c.d(),无法区分出这是a.b包c类的d方法,还是a包b类c属性的d方法,说实话我个人每台理解这和不能import static有什么冲突。今天有点晚了,先记录下问题,之后再仔细思考吧。

回到问题,发现项目中的确存在 import static 了 一个@UtilityClass的一个成员,修改代码之后,问题解决,成功编译。

对于这个问题,我还是赞同github其中一个人的观点,Lombok既然官方已经知道这件事,好歹可以在相关注解的javadoc里提示一下吧。。但是官方对此一直无动于衷,真的让人有些懊恼。。

重复一遍结论:

被Lombok 的 @UtilityClass 或 @Builder 标记的类中的成员,不能通过 import static方式引入。

以上。

祝大家工作顺利

以上是关于maven编译项目报错了?的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot项目 - Maven Build Lombok 报错

IDEA下的MAVEN项目,pom.xml文件不报错,项目也可以正常运行,但是右侧却报错了,如下图

新建的maven项目直接用maven编译报错

maven项目(引入依赖失败, pom.xml 报错爆红)

Eclipse Maven项目报错1之JAVA编译版本报错

Intellij idea编译项目报错,项目里没有配maven,搞了好几天了,求大神帮忙。