Lombok 1.18.2不适用于Maven和JDK 10

时间:2018-08-08 07:13:29

标签: java maven lombok java-10

当我尝试在JDK 10下编译Java Projekt时,Lombok并未创建getter / setter。

使用Lombok批注的类。

package com.testcompany.data;

import java.util.HashMap;
import java.util.Map;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class DataInfo {
    private Map<String,String> metadata = new HashMap<>();
    private String extractedString;
}

龙目岛注释类的用法

String test = dataInfo.getExtractedString();

我正在使用以下版本将源代码编译为Java 10:

  • maven(3.5.4)
  • maven-compiler-plugin 3.8.0
  • Java 10(subversion 2)
  • 龙目岛1.18.2

pom.xml 在依赖项部分

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>${lombok.version}</version>
    <scope>provided</scope>
</dependency>

以及在maven-compiler-plugin部分

<annotationProcessorPaths>
    <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
    </path>
</annotationProcessorPaths>

当我通过mvn install编译时,出现以下错误:

MemberRegistration.java:[50,36] cannot find symbol
  symbol:   method getExtractedString()
  location: variable dataInfo of type com.testcompany.data.DataInfo

使用jdk 10时我需要做些什么吗?

1 个答案:

答案 0 :(得分:3)

谢谢大家! 主要问题是,我使用了编译器Argument“ -proc:none ”,这意味着“无需注释处理即可进行编译...”。所以我删除了这个论点。除此之外,还建议使用以下编译器参数(请参见 compilerArgs 部分):

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.0</version>
  <configuration>
    <source>10</source>                                                
    <target>10</target>                                                
    <release>10</release>                                              
    <executable>javac10</executable>
    <fork>false</fork>                            
    <encoding>UTF-8</encoding>
    <!-- see https://github.com/rzwitserloot/lombok/issues/985#issuecomment-356135454 -->
    <compilerArgs>
        <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
        <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
        <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
        <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
        <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
        <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
        <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
        <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
        <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
        <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg>
    </compilerArgs>
    <annotationProcessorPaths>
      <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.2</version>
      </path>
    </annotationProcessorPaths>
    <showWarnings>true</showWarnings>
  </configuration>
  <dependencies>                                                         
    <dependency>                                                       
      <groupId>org.ow2.asm</groupId>                                 
      <artifactId>asm</artifactId>                                   
      <version>6.2</version>
    </dependency>                                                      
  </dependencies>
  </plugin>
<plugin>