java - 是否能够在构建过程中将 REST 端点标记为忽略?

标签 java web-services rest maven jackson

我在 Eclipse 中有一个 Jackson 服务项目,它使用 Maven 进行构建过程,并且我有几个单元测试所需的“仅测试”端点,但应该在公共(public)构建中删除。是否有注释或其他配置属性可以设置,以便在构建过程中(单元测试通过后),端点不会被部署?

例如,我有一个类似的方法:

@GET
@Path("/{user}/addresses")
@Produces(MediaType.APPLICATION_JSON)
public Map<String, Object> getUserAddresses(...){ ... }

发布后,用户地址将来自第三方系统,但为了测试,我们需要一种添加地址的方法,所以我有

@POST
@Path("/{user}/address")
@Produces(MediaType.APPLICATION_JSON)
public Map<String, Object> createAddress(

但我希望第二种方法永远不会存在于实时服务器上。

最佳答案

我只是将“仅测试”类放在src/test/java中。没有规定只能出现在 src/test/java 中的只是单元测试。

这样您就无需使用 Maven 进行额外配置来排除类。

或者,您可以告诉 maven-jar-plugin 或 maven-war-plugin to exclude specific classes from being packaged in the final artifact ,但这有一个缺点,就是无法捕获您意外导入真实类中的“仅测试”类之一的情况,因此您在 jar/war 中发送了一些会导致 NoClassDefFoundError 的内容。如果您将“仅测试”类放在 src/test/java 中,并因此确保它们仅位于测试类路径上,则不会出现这种意外导入问题(主代码编译将失败)。

关于java - 是否能够在构建过程中将 REST 端点标记为忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645764/

相关文章:

xml - 无纸化文档 API 中的 XML 文档格式错误

java - 识别 'null' 是否是故意在输入 JSON 上设置的

java - 从没有 API 的网站获取数据?

java - Jersey URISchemeScanner

java - Spring Security super 密码

java - Hibernate 中 @MapsId 注解的用途

java - 使用Python请求调用Java Web服务

java - 在静态方法中使用 this.var 时出错,如果使用任何其他 var 名称,错误就会消失

java - 如何使用java在mysql的枚举类型列中插入两个以上的值?

c# - 在 ASP.NET C# 中调用 Web 服务时 session 为空