我正在开发一个多模块项目,其中包括一些不同的组件以及端到端(集成)测试的子模块。这个多项目包括一些可以互相交流的web应用程序,库和类似TCP“守护程序”的应用程序(即,它在一个套接字上侦听连接,然后处理来自客户端的请求),用Netty编写
目前,我们使用appasembler-maven-plugin打包这个套接字监听器,允许我们在Windows上安装套接字监听器作为Windows服务(即我们的工作站)或Linux中的标准init.d服务(我们的主要)测试/生产环境)。
我对这种安排感到满意,但它有一些缺点:要运行我的工作站的端到端测试,我们必须打包这个套接字监听器,运行服务安装程序(如果我还没有),然后重启服务。 Linux上有一些类似的复杂性。在任何一种情况下,我都找不到一个干净的方式构建,(单元)测试,打包,部署,然后在一个命令中对整个系统运行端到端测试。我们的各种环境使这变得更加困难:我可能能够获得一些工作,但它将非常依赖于平台。
我更喜欢的是,如果Maven可以在pre-integration-test
阶段启动此套接字侦听器,然后运行测试,然后在测试完成时停止侦听器。这似乎应该是可能的,因为这个监听器的主类只是一个Runnable
,我可以做一些事情,比如在Eclipse中运行它只是说“Run as Java Application”。
那么有没有办法让Maven在给定的构建阶段执行一个类?在测试运行后,我怎么能让Maven“拆掉”听众呢?