maven compile 有时会失败有时会成功
Posted
技术标签:
【中文标题】maven compile 有时会失败有时会成功【英文标题】:maven compile sometimes fail and sometimes succeed 【发布时间】:2020-10-17 20:32:28 【问题描述】:我使用 VS Code 并且已经安装了“Lombok Annotations Support for VS Code”。我使用 maven clear 然后编译,编译失败。然后当我在几秒钟后尝试 maven compile 时,它构建成功。我在两个 maven 编译之间什么都不做。
我检查了错误信息,似乎 Lombok 注释不起作用。Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile (default-compile)
[ERROR] symbol: method setName(java.lang.String)
[ERROR] symbol: method setCustomerUrl
ERROR] required: no arguments
当它构建成功时,我收到了消息
[INFO] 构建演示 0.0.1-SNAPSHOT [信息] --------------------------------[ 罐子 ]------------ --------------------- [信息] [信息] --- maven-resources-plugin:3.1.0:resources (default-resources) @ withjpa --- [INFO] 使用 'UTF-8' 编码复制过滤的资源。 [INFO] 复制 1 个资源 [INFO] 复制 0 个资源 [信息] [信息] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ withjpa --- [INFO] 无需编译 - 所有类都是最新的 [信息] --------------------------------------------- ------------------------- [信息] 构建成功
而我的 pom.xml 是
org.springframework.boot spring-boot-maven-plugin插件>org.apache.maven.plugins maven-compiler-plugin3.5.1 1.8 org.mapstruct mapstruct 处理器$org.mapstruct.version 路径>
我想知道我应该将插件版本更改为旧版本吗?但是当我将其更改为 3.1.0 时,会出现 CoreException。 这是我的仓库:https://github.com/lyl156/backend/blob/master/src/main/java/com/example/withjpa/domain/Category.java
【问题讨论】:
它可能类似于类路径中 jar 的编译器与运行时列表。其中一个可能会丢失。也许在构建生命周期和您可以进一步调查的错误之间存在某种模式。 【参考方案1】:试试这个:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>$java.version</source>
<target>$java.version</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>$org.mapstruct.version</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>$lombok.version</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<compilerArg>
-Amapstruct.defaultComponentModel=spring
</compilerArg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
另见:
https://mapstruct.org/faq/#Can-I-use-MapStruct-together-with-Project-Lombok 和linked sample【讨论】:
【参考方案2】:Lombok 在编译时会在后台进行字节码操作。
这里使用的其中一个编译器没有添加 Lombok 支持,因此没有完成操作。您的 IDE 中有一个编译器,命令行中有一个编译器,它们都输出到同一个位置。
我敢说你还没有关注https://projectlombok.org/setup/maven。
【讨论】:
谢谢,这两个答案都帮助我更多地了解龙目岛是做什么的以上是关于maven compile 有时会失败有时会成功的主要内容,如果未能解决你的问题,请参考以下文章
从 linux 的 dot net core 连接到远程 sql server 有时会失败,然后开始随机工作