在Maven编译期间如何忽略Java Source目录?


问题内容

我正在尝试使用Lombok Maven插件来确保在使用Lombok时正确创建Javadocs 。

在编译之前,Lombok Maven引入了一个新的代码生成目标。在我的配置中,我的sourceDirectory(带有Lombok批注的Java
src/main/java)被处理以在中创建Java(没有Lombok批注)target/generated-sources/delombok

但是,其中的每个文件sourceDirectory现在在中都有一个对应的文件(名称相同)target/generated- sources/delombok,由于类重复,导致编译失败。

如何告诉Java编译器忽略其中的源代码sourceDirectory

请注意,默认的Lombok
Maven配置将使开发人员将Java(带有Lombok批注)放置在src/main/lombok文件夹中,而不是src/main/java。但是,我不希望这样做,因为它会使IDE混乱并且我的代码可以正常编译(如果我删除了Maven插件)。

还要注意,简单地重新定义sourceDirectory也会使IDE烦恼(它们不再知道在哪里找到Java源代码!)。


问题答案:

我最近从使用flakey maven-exec-plugin方法生成javadoc工具的原始源切换为使用lombok-maven-plugin

我的设定

  • 中的所有来源 src/main/java
  • 生成的源进入 target/generated-sources/delombok

最初,我遇到了这个问题,但这似乎很容易解决:不要让lombok-maven-
plugin使用来将delombok路径添加到编译器源路径中addOutputDirectoy。IE浏览器

<plugin>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-maven-plugin</artifactId>
    <version>0.11.2.0</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>delombok</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <addOutputDirectory>false</addOutputDirectory>
        <sourceDirectory>src/main/java</sourceDirectory>
    </configuration>
</plugin>

这似乎已经解决了这个问题

编辑: 奖金,如何使用此设置生成适当的javadocs

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.8.1</version>
    <configuration>
        <defaultVersion>${project.version}</defaultVersion>
        <sourcepath>target/generated-sources/delombok</sourcepath>
    </configuration>
</plugin>