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

fom*_*mil 22 java maven lombok

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

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源代码!).

The*_*eLQ 24

我最近从使用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>
Run Code Online (Sandbox Code Playgroud)

这似乎解决了现在的问题

编辑:奖金,如何使用此设置生成正确的javadoc

<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>
Run Code Online (Sandbox Code Playgroud)