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

Kri*_*ris 0 java scala compilation maven lombok

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

Scala 性能测试依赖于几个具有@DataLombok 注释的 Java 集成测试类。为了让 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>
Run Code Online (Sandbox Code Playgroud)

Sté*_*LLE 5

免责声明:这里是 Gattle 创始人和 scala-maven-plugin 共同维护者

注释处理,特别是 Lombok,是一个超级奇怪的野兽。似乎 scala-maven-plugin 不支持它,请参阅https://github.com/davidB/scala-maven-plugin/issues/342(由于缺乏活动/贡献而关闭)。

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