O.Z*_*ats 8 java maven lombok maven-compiler-plugin
我在项目中的Maven中有一个根模块和子模块。我正在尝试使用龙目岛。我已经添加了
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.12</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
根pom.xml。在子模块中,我有一个带有Lombok批注的类。当我尝试建立项目时,我得到了很多
找不到标志
我试图在这里打电话给getters和setters。
我试图在根pom和子pom中使用具有相同版本(1.16.12)的lombok -maven-plugin,以及delombok,并将带注释的类移至src / main / lombok,我已经遍历了几乎所有问题因此,请尝试所有变体,但不会成功。
我正在使用3.6.1版本的Maven 3,Java 8,maven-compiler-plugin。
我应该如何配置项目以使用lombok?也许我做错了什么。
这不是似乎已解决的问题的直接答案,但可供将来的搜索者参考:
如果您使用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>
Run Code Online (Sandbox Code Playgroud)
您必须在此处添加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>
Run Code Online (Sandbox Code Playgroud)
但是您仍然必须将lombok列为提供的依赖项;)
如果有人使用JDK 11
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>-sourcepath</arg>
<arg>${project.basedir}/src/main/java${path.separator}${project.basedir}/target/generated-sources/annotations${path.separator}/</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
我使用的是 Java 8 和@Getter(onMethod = @__({@NoSerialization}))onX@Getter(onMethod = @__({@Translation(messageKey = "translation.key")}))注释。我收到duplicate element '<any?>' in annotation @<any?>.错误输出。看起来来自 Lombok 的人对 Java 8 存在这样的问题很长一段时间,链接到 github 上的问题。Lombok 不处理带有参数的注释,如messageKey上面的注释。它仅适用于不带参数的注释和仅带value参数的注释(当您不写参数名称时)。
| 归档时间: |
|
| 查看次数: |
14388 次 |
| 最近记录: |