Gar*_*son 6 java annotations javadoc maven-javadoc-plugin swagger-maven-plugin
Javadoc(通过Maven)在我的Java JAX-RS接口方法签名中给出了以下错误:
error: element value must be a constant expression
Run Code Online (Sandbox Code Playgroud)
这是我的JAX-RS接口:
public interface FooResource {
@Consumes(APPLICATION_FORM_URLENCODED_UTF_8)
public void bar();
}
Run Code Online (Sandbox Code Playgroud)
Javdoc给出了错误@Consumes.以下是APPLICATION_FORM_URLENCODED_UTF_8出现在MyAppConstants同一项目中的定义:
public static final String APPLICATION_FORM_URLENCODED_UTF_8 =
APPLICATION_FORM_URLENCODED + ";" + CHARSET_PARAMETER + "=UTF-8";
Run Code Online (Sandbox Code Playgroud)
这里是这样定义的APPLICATION_FORM_URLENCODED,它出现在javax.ws.rs.core.MediaType:
public final static String APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded";
Run Code Online (Sandbox Code Playgroud)
这里是定义CHARSET_PARAMETER,也出现在javax.ws.rs.core.MediaType:
public static final String CHARSET_PARAMETER = "charset";
Run Code Online (Sandbox Code Playgroud)
现在我问你:APPLICATION_FORM_URLENCODED_UTF_8在编译时不是很常见?
错误消息没有说我必须提供文字.它说我必须提供一个常数.那么这不是一个常数呢?
(我几乎可以发誓这种情况曾经有效但突然停止了工作.)
更新: 找到原因,但仍然不明白.
出于某种原因,仅仅包括swagger-maven-plugin在POM中就会触发这个问题!我的代码根本没有改变,但是一旦我添加了以下依赖项,我突然得到现有代码的Javadoc警告!
<dependency>
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<version>3.1.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
单个依赖如何使Javadoc在代码文件上的工作方式不同?在swagger-maven-plugin做什么?
我最好的猜测是,发生这种情况是因为swagger-maven-plugin传递(通过io.swagger:swagger-core:1.5.13)旧版本的 JAX-RS 规范在javax.ws.rs:jsr311-api:1.1.1. 请注意,JAX-RS 2 工件 ID 为javax.ws.rs-api,Maven 没有意识到它们是同一 JAR 的不同版本,并将它们作为依赖项拉入。我只能猜测javax.ws.rs:jsr311-api实际上并没有对相关变量使用常量。无论如何,当我抛出swagger-maven-plugin并拉入io.swagger:swagger-annotations(这是我在这个项目中所需的所有文档)时,问题就消失了。
请参阅https://github.com/kongchen/swagger-maven-plugin/issues/543。
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |