当前位置: 首页 > 知识库问答 >
问题:

如何用maven-compiler-plugin使用多个注释处理器

容宏逸
2023-03-14

我有一个spring boot项目,它有lombok和mapstruct,并使用maven作为构建工具。我需要在编译时用最终JAR打包的生成源代码处理注释。构建成功。但是,最后一个jar缺少mapstruct实现类。当我尝试启动Spring Boot应用程序时,错误是:

应用程序启动失败

考虑在您的配置中定义一个类型为'com.some_org.service.salesforce.object.mapper.SalesforceObjectMapper'的bean。

下面是我的maven-compiler-plugin设置:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.7.0</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <annotationProcessorPaths>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.12</version>
            </path>
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>1.2.0.Final</version>
            </path>
        </annotationProcessorPaths>
        <compilerArgs>
            <compilerArg>-Amapstruct.suppressGeneratorTimestamp=true</compilerArg>
            <compilerArg>-Amapstruct.suppressGeneratorVersionInfoComment=true</compilerArg>
        </compilerArgs>
    </configuration>
</plugin>

共有1个答案

皇甫雨石
2023-03-14

最终解决了这个问题,方法是在编译阶段使用如下所示的执行重写默认的编译目标:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.7.0</version>
    <executions>
        <execution>
            <id>Compile With Annotation Processing</id>
            <phase>compile</phase>
            <goals>
                <goal>compile</goal>
            </goals>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.12</version>
                    </path>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>1.2.0.Final</version>
                    </path>
                </annotationProcessorPaths>
                <compilerArgs>
                    <compilerArg>-Amapstruct.suppressGeneratorTimestamp=true</compilerArg>
                    <compilerArg>-Amapstruct.suppressGeneratorVersionInfoComment=true</compilerArg>
                </compilerArgs>
            </configuration>
        </execution>
    </executions>
</plugin>
 类似资料:
  • 问题内容: 我在项目中的Maven中有一个根模块和子模块。我正在尝试使用龙目岛。我已经添加了 根pom.xml。在子模块中,我有一个带有Lombok批注的类。当我尝试建立项目时,我得到了很多 找不到标志 我试图在这里打电话给getters和setters。 我试图在根pom和子pom中使用具有相同版本(1.16.12)的lombok -maven-plugin 以及delombok,并将带注释的类

  • 问题内容: 是否可以在一个方法上使用多个注释? Like : 问题答案: 有一个值参数,因此你应该能够指定多个值,如下所示:

  • 我正在使用Spring Boot+Spring Batch(注释),遇到了一个我必须运行2个作业的场景。 我有员工和工资记录,需要使用spring批处理更新。我已经按照本教程spring-batch入门教程为Employee和Salary对象配置了

  • 问题内容: 是否可以在一个方法上使用多个注释? 喜欢 : 问题答案: 有一个值参数,因此您应该能够指定多个值,如下所示:

  • null 代码(步骤1和2): 实际上,第一个任务执行良好,并为注释处理器实现编译.class文件。它在第二个任务停止。 Ant说: Java 1.6 Ant 1.8.2

  • 我正在学习Selenium,我想尝试将maven-compiler-plugin添加到pom.xml并重新导入maven设置。因此,我找到了这个例子来做它http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html,并尝试将代码添加到pom.xml。但是示例3.8