1

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

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

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

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

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

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

4

1 回答 1

1

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

这样,您无需额外配置 Maven 来排除类。

或者,您可以告诉 maven-jar-plugin 或 maven-war-plugin排除特定类被打包到最终工件中,但这有一个缺点是无法捕捉到您不小心导入其中一个“只测试”真实类中的类,因此你在你的 jar/war 中发送一些会导致 NoClassDefFoundError 的东西。如果您将“仅测试”类放入其中src/test/java,并因此确保它们仅在测试类路径中,则不会出现这种意外导入问题(主代码的编译将失败)。

于 2012-09-28T20:08:06.967 回答