How to configure Lombok with maven-compiler-plugin?
我在项目的maven中有一个根模块和子模块。 我正在尝试使用龙目岛。
我已经添加了
1 2 3 4 5 6 | <dependency> <groupId>org.projectlombok</groupId> lombok</artifactId> <version>1.16.12</version> <scope>provided</scope> </dependency> |
根pom.xml。
在子模块中,我有一个带有Lombok批注的类。
当我尝试建立项目时,我得到了很多
cannot find symbol
我试图在这里打电话给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(或其他工具)来处理注释,例如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <path> <groupId>com.google.dagger</groupId> dagger-compiler</artifactId> <version>2.15</version> </path> </annotationProcessorPaths> <source>1.8</source> <target>1.8</target> </configuration> </plugin> .... </plugins> </build> |
您必须添加lombok作为路径,例如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <path> <groupId>com.google.dagger</groupId> dagger-compiler</artifactId> <version>2.15</version> </path> <!-- SOLUTION --> <path> <groupId>org.projectlombok</groupId> lombok</artifactId> <version>1.16.20</version> </path> </annotationProcessorPaths> <source>1.8</source> <target>1.8</target> </configuration> </plugin> .... </plugins> </build> |
您仍然必须将lombok列为提供的依赖项。
如果有人使用JDK 11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <path> <groupId>org.projectlombok</groupId> lombok</artifactId> <version>${lombok.version}</version> </path> </annotationProcessorPaths> <compilerArgs> -sourcepath</arg> ${project.basedir}/src/main/java${path.separator}${project.basedir}/target/generated-sources/annotations${path.separator}/</arg> </compilerArgs> </configuration> </plugin> </plugins> </build> |
我正在使用Java 8和
我不确定lombok和lombok-maven-plugin之间有什么区别,但是我的项目配置了这种依赖关系:
1 2 3 4 5 | <dependency> <groupId>org.projectlombok</groupId> lombok-maven-plugin</artifactId> <version>1.16.12.0</version> </dependency> |
我还没有尝试过root和submodule poms,因为我的项目都倾向于彼此隔离。不知道这是否会给您造成问题。
如果使用的是Eclipse,是否已运行lombok.jar文件并将其指向eclipse.exe文件?它需要修改.exe,以使Eclipse知道这些getter和setter即将到来,以便Eclipse在开发过程中不会抱怨。
编辑:
我正在使用maven-compiler-plugin:
1 2 3 4 5 6 7 8 9 | <plugin> <groupId>org.apache.maven.plugins</groupId> maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> |
我遇到了同样的问题,但没有任何效果,即maven插件版本,annotationProcessorPaths,提供的范围等。
最后,我将其范围缩小为从同一项目中的类对
Github上有一个未解决的问题,尽管显然很难解决。
Maven Groovy和Java +龙目岛
这个堆栈溢出答案的解决方案为我工作。我错过了前面添加javaAgentClass的机会
用:
1 | <scope>provided</scope> |
在pom.xml中是这样的:
1 2 3 4 5 6 7 8 | <dependencies> <dependency> <groupId>org.projectlombok</groupId> lombok</artifactId> <version>1.16.20</version> <scope>provided</scope> </dependency> </dependencies> |