Sel*_*ena 12 intellij-idea maven lombok intellij-lombok-plugin
我有一个Maven管理的Lombok项目,我使用Intellij.在构建之后,由于target/generated-sources/delombok中生成的源,我总是在Intellij中遇到关于重复类的大量错误.我有什么办法可以摆脱这些错误吗?现在我只删除目标文件夹,但这真的很烦人.
我在Maven中有标准配置,而lombok源代码在main/src/lombok中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.16.8.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
</execution>
</executions>
</plugin>
<profiles>
<profile>
<id>lombok-needs-tools-jar</id>
<activation>
<file>
<exists>${java.home}/../lib/tools.jar</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.16.8.0</version>
<dependencies>
<dependency>
<groupId>sun.jdk</groupId>
<artifactId>tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
Krz*_*iek 10
根据delombok目标文档:默认输出目录是:
${project.build.directory}/generated-sources/delombok
Run Code Online (Sandbox Code Playgroud)
我找到了JetBrains团队成员的评论,说明:
IDEA会自动排除构建"目标"文件夹,前提是它下面没有生成的源,否则它会排除所有子文件夹,但会生成所有子文件夹.
如果您想要排除某些生成的代码或构建工件,则可以将其放在"target"文件夹下.
这意味着/generated-sources
默认情况下不会排除目录,如果您打算排除某些文件,则应将它们放在父/target
目录下,而不是在目录下/generated-sources
.
要实现此目的,您应该配置插件并提供非默认值<outputDirectory>
:
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.16.18.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
</execution>
</executions>
<configuration>
<sourceDirectory>src/main/java</sourceDirectory>
<outputDirectory>${project.build.directory}/delombok</outputDirectory>
<addOutputDirectory>false</addOutputDirectory>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这将阻止IDEA Duplicate class found in (...)
发出警告.
Andrey Dernov在这里建议的这个解决方案对我来说适用于 Maven。
启用设置(macOS 上的首选项)> 构建、执行、部署 > 构建工具 > Maven > 运行器 > 启用“将 IDE 构建/运行操作委托给 maven”选项
归档时间: |
|
查看次数: |
4716 次 |
最近记录: |