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.bootspring-boot-maven-plugin插件>
            
                org.apache.maven.pluginsmaven-compiler-plugin3.5.11.81.8org.mapstructmapstruct 处理器$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 有时会失败有时会成功的主要内容,如果未能解决你的问题,请参考以下文章

为啥有时会跳过 maven 依赖项中的版本号?

为啥有时小吃店会失败

从 linux 的 dot net core 连接到远程 sql server 有时会失败,然后开始随机工作

为啥有时 Directory.CreateDirectory 会失败?

为啥`git stash -p`有时会失败?

将密码包含在 中时,SQLDriverConnect 有时会失败