在 Maven 项目中混合 Lombok、Java 和 Scala

Mix Lombok, Java and Scala in a maven project

我有一个混合 Scala/Java maven 项目,其中应用程序代码、单元和集成测试是用 Java 编写的,但性能测试是用 Scala 编写的。

Scala 性能测试依赖于一对 Java 集成测试 类,它们具有 @Data Lombok 注释。为了让 getter 和 setter 工作,我必须编译 JavaThenScala,我可以通过 IntelliJ Scala 编译器设置来完成。

我的问题是 - 有没有一种方法可以设置我的 maven 插件来执行 JavaThenScala 编译而不调整 IntelliJ 设置,因为我想在其他地方部署代码?

我正在尝试使用 compileOrder 配置,但它似乎对我不起作用。

我的 Maven 插件:

  <build>
    <plugins>
      <plugin>
        <groupId>met.alchim31.maven</groupId>
        <artifactId>scala-maven-plugin</artifactId>
        <version>4.0.0</version>
        <configuration>
            <compileOrder>JavaThenScala</compileOrder>
        </configuration>
      </plugin>
      <plugin>
        <groupId>io.gatling</groupId>
        <artifactId>gatling-maven-plugin</artifactId>
        <version>3.1.1</version>
      </plugin>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

免责声明:此处为 Gatling 创始人和 scala-maven-plugin 共同维护者

注释处理,尤其是 Lombok,是一个超级怪兽。 似乎 scala-maven-plugin 不支持它,参见 https://github.com/davidB/scala-maven-plugin/issues/342(由于缺少 activity/contribution 而关闭)。

然后,我建议您将 Gatling 测试隔离在一个专用模块中,这样您就可以在一个纯 Java 模块中构建基于 Lombok 的测试 类,该模块将发布一个 test jar然后让你的加特林模块依赖于这个测试罐。