如何使用 maven-compiler-plugin 配置 Lombok?

新手上路,请多包涵

我在项目的maven中有一个根模块和子模块。我正在尝试使用龙目岛。我已经添加了

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.12</version>
    <scope>provided</scope>
</dependency>

根 pom.xml。在子模块中,我有一个带有 Lombok 注释的类。当我尝试构建项目时,我得到了很多

找不到标志

我正在尝试调用 getter 和 setter 的地方。

我尝试在根 pom 和子 pom 中使用相同版本 (1.16.12) 的 lombok -maven-plugin 以及 delombok 并将我的注释类移动到 src/main/lombok,我已经查看了几乎所有问题所以,尝试所有变体,但没有成功。

我正在使用 3.6.1 版本的 Maven 3、Java 8、maven-compiler-plugin。

我应该如何配置项目才能使用 lombok?或者也许我做错了。

原文由 Oleksandr Zaiats 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

我使用的是 Java 8 和 @Getter(onMethod = @__({@NoSerialization}))@Getter(onMethod = @__({@Translation(messageKey = "translation.key")})) onX 注释。我在错误输出中得到 duplicate element '<any?>' in annotation @<any?>. 。看起来来自 Lombok 的人对 Java 8 有这样的问题很长一段时间 链接到 github 上的问题。 Lombok 不处理上面注释中带有 messageKey 等参数的注释。它只适用于没有参数的注释和只有 value 参数的注释(当你不写参数名称时)。

原文由 Oleksandr Zaiats 发布,翻译遵循 CC BY-SA 3.0 许可协议

这不是对似乎已经解决的问题的直接回答,但可以作为未来搜索者的参考:

如果您使用 Dagger(或其他工具)来处理您的注释,例如

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.7.0</version>
      <configuration>
        <annotationProcessorPaths>
          <path>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger-compiler</artifactId>
            <version>2.15</version>
          </path>
        </annotationProcessorPaths>
        <source>1.8</source>
        <target>1.8</target>
      </configuration>
    </plugin>
    ....
  </plugins>
</build>

你必须添加 lombok 作为路径

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.7.0</version>
      <configuration>
        <annotationProcessorPaths>
          <path>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger-compiler</artifactId>
            <version>2.15</version>
          </path>

          <!-- SOLUTION -->
          <path>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
          </path>

        </annotationProcessorPaths>
        <source>1.8</source>
        <target>1.8</target>
      </configuration>
    </plugin>
    ....
  </plugins>
</build>

您仍然必须将 lombok 列为提供的依赖项。

原文由 Ore 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题