使用 delombok maven 插件将我的所有文件放在“target/generated-sources/delombok”中。当我尝试运行 maven 编译器时,它会抱怨重复的类,所以我按照这个问题的建议将 addOutputDirectory 设置为 false 。现在的问题是 delombok 的文件被忽略了,因此编译器抱怨缺少方法。
如何告诉 maven 编译器插件忽略默认的“src/main/java”目录,而是使用“target/generated-sources/delombok”目录进行编译?
当编译器运行时,运行 mvn compile -X 会产生以下输出:
[DEBUG] (f) compileSourceRoots = [C:\Users\Jamey.Holden\workspace\Apollo\Website\src\main\java, C:\Users\Jamey.Holden\workspace\Apollo\Website\target\generated-sources\java]
[DEBUG] (f) compilerId = javac
[DEBUG] (f) debug = true
[DEBUG] (f) encoding = UTF-8
[DEBUG] (f) failOnError = true
[DEBUG] (f) forceJavacCompilerUse = false
[DEBUG] (f) fork = false
[DEBUG] (f) generatedSourcesDirectory = C:\Users\Jamey.Holden\workspace\Apollo\Website\target\generated-sources\annotations
[DEBUG] (f) mojoExecution = org.apache.maven.plugins:maven-compiler-plugin:3.0:compile {execution: default-compile}
[DEBUG] (f) optimize = false
[DEBUG] (f) outputDirectory = C:\Users\Jamey.Holden\workspace\Apollo\Website\target\classes
[DEBUG] (f) proc = none
[DEBUG] (f) projectArtifact = ic.apollo:website:war:0.1
[DEBUG] (f) showDeprecation = false
[DEBUG] (f) showWarnings = false
[DEBUG] (f) skipMultiThreadWarning = false
[DEBUG] (f) source = 1.6
[DEBUG] (f) staleMillis = 0
[DEBUG] (f) target = 1.6
[DEBUG] (f) verbose = false
[DEBUG] (f) mavenSession = org.apache.maven.execution.MavenSession@393e6226
[DEBUG] (f) session = org.apache.maven.execution.MavenSession@393e6226
然后再往下打印命令行选项,我可以看到 -sourcepath 参数是:-sourcepath C:\Users\Jamey.Holden\workspace\Apollo\Website\src\main\java;C:\Users\Jamey.Holden\workspace\Apollo\Website\target\generated-sources\java;
这些都不是 delombok 目录,所以它在尝试编译时找不到所有的 getter 和 setter 是很公平的。
更新 我想我已经找到了问题的根源。我正在设置 proc=none 以防止注释处理,因为我正在使用 queryDSL 生成元实体,并且当未设置此项以避免注释处理时,编译器发现重复实体错误。删除 proc=none 和 querydsl 注释处理器解决了这个问题。现在我只是去让 m2e 再次工作。