yun*_*dus 9 java javadoc maven lombok maven-javadoc-plugin
我有一堂课,如下所示:
@Data
@Builder
public class Foo {
private String param;
/** My custom builder.*/
public static FooBuilder builder(String _param){
return builder().param(_param);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[错误]无法在项目foo上执行目标org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:javadoc(default-cli):JavaDocs报表生成中发生错误:
[错误]退出代码: 1-/home/workspace/foo/src/main/java/com/foo/Foo.java:34:错误:找不到符号
[ERROR]公共静态FooBuilder builder(String _param)
[ERROR] ^
[ERROR]符号: FooBuilder类
[错误]位置:Foo类
Dav*_*ins 18
Lombok 实际上能够填充部分定义的构建器类,因此您可以声明足够的构建器以使 Javadoc 满意,然后将其保留。无需德龙博克。
在这种情况下,以下对我有用:
@Data
@Builder
public class Foo {
private String param;
/** My custom builder.*/
public static FooBuilder builder(String _param){
return builder().param(_param);
}
public static class FooBuilder {}
}
Run Code Online (Sandbox Code Playgroud)
旁注:您实际上可以使用这种技术来添加一些客户构建器方法,因此它有好处。当我有集合时,我喜欢重载构建器方法,这样我就可以一次一个项目。可能已经有一些技术可以做到这一点,但很高兴知道您可以手动改进构建器。
yun*_*dus 11
为了解决此问题,我必须使用Lombok的delombok功能(参见:https : //projectlombok.org/features/delombok)。
lombok不能涵盖所有工具。例如,lombok无法插入在Java源代码上运行的javadoc...。Delombok仍然允许您将lombok与这些工具一起使用,方法是将Java代码预处理为具有所有lombok转换的Java代码。
我通过添加以下插件使用Maven做到了这一点:
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.18.0.0</version>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<outputDirectory>${delombok.output}</outputDirectory>
<addOutputDirectory>false</addOutputDirectory>
</configuration>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
<configuration>
<sourcepath>${delombok.output}</sourcepath>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)